RequiredArgsConstructor

RequiredArgsConstructor

我正在将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

}

08-05 16:34