Lombok不生成RequiredArgsConstructor和AllArgsConstructor

god*_*zsa 5 java gradle lombok spring-boot

我使用的是Lombok 1.16.18和Gradle 4.0,Java 8和Spring-Boot 1.5.9.RELEASE.

当我构建并运行项目时,它成功,但是当调用包含自动装配的服务时,使用@RequiredArgsConstructor(onConstructor = @__(@Autowired))或者NullPointerException失败 @AllArgsConstructor(onConstructor = @__(@Autowired)).

我检查了生成的.classes,他们缺少构造函数.

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

Val*_*oMC 7

我用构造函数注入仅限定@RequiredArgsConstructorfinal成员变量如下(不使用onConstructor)

@Repository
@Slf4j
@RequiredArgsConstructor
public class FieldRepository {

    private final DSLContext dsl;

    private final DataSource dataSource;

    //... dsl and datasource are correctly injected 

}
Run Code Online (Sandbox Code Playgroud)

  • 是的,你会有构造函数注入,因为`dsl`和`dataSource`是`final` (3认同)
  • `final` 是关键,因为 `@RequiredArgsConstructor` 只考虑 `final` 字段。如果您没有,Lombok 会为您提供一个无参数构造函数。Spring 会调用它,并且不会调用额外的 all-args 构造函数。 (3认同)