我正在将Lombok 1.16.18和Gradle 4.0与Java 8和Spring-Boot 1.5.9.RELEASE一起使用。
当我构建并运行项目时,它会成功,但是在调用包含 Autowiring 的服务时,它将失败,并使用NullPointerException@RequiredArgsConstructor(onConstructor = @__(@Autowired))
或@AllArgsConstructor(onConstructor = @__(@Autowired))
。
我已经检查了生成的.class,它们缺少构造函数。
当然,如果我手动创建构造函数并将@Autowire
放在上面,它将起作用。但是我正在一个有很多现有代码的大型项目中,并且不想重写所有内容。为什么会发生这种情况有什么想法?看起来gradle或lombok并未预处理这些注释,但是所有其他@Getter
和@Setter
等都可以正常工作,并且生成的.class文件包含它们...
最佳答案
我仅使用@RequiredArgsConstructor
成员变量定义final
来使用构造函数注入(inject),如下所示(不使用onConstructor
)
@Repository
@Slf4j
@RequiredArgsConstructor
public class FieldRepository {
private final DSLContext dsl;
private final DataSource dataSource;
//... dsl and datasource are correctly injected
}