首页 > 解决方案 > Lombok 不生成RequiredArgsConstructor 和AllArgsConstructor

问题描述

我正在使用带有 Java 8 和 Spring-Boot 1.5.9.RELEASE 的 Lombok 1.16.18 和 Gradle 4.0。

当我构建并运行项目时,它会成功,但是当调用包含 Autowiring 的服务时,它会失败,并使用 @RequiredArgsConstructor(onConstructor = @__(@Autowired))or出现 NullPointerException @AllArgsConstructor(onConstructor = @__(@Autowired))

我检查了生成的 .classes 并且它们缺少构造函数。

当然,如果我手动创建构造函数并戴上@Autowire它就可以了。但是我正在开发一个包含大量现有代码的大型项目,并且不想重写所有内容。关于为什么会发生这种情况的任何想法?看起来 gradle 或 lombok 没有预处理这些注释,但是所有其他@Getter等等@Setter都工作正常并且生成的 .class 文件包含它们......

标签: javaspring-bootgradlelombok

解决方案


我使用构造函数注入只定义成员变量如下(不@RequiredArgsConstructor使用)finalonConstructor

@Repository
@Slf4j
@RequiredArgsConstructor
public class FieldRepository {

    private final DSLContext dsl;

    private final DataSource dataSource;

    //... dsl and datasource are correctly injected 

}

推荐阅读