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