Lombok 支持生成带有
@Inject
注解的构造函数:
@RequiredArgsConstructor(onConstructor = @__(@Inject))
所以,而不是
@Service
public class FooService {
private final BarService barService;
@Inject
public FooService(BarService barService) {
this.barService = barService;
}
}
你可以写
@Service
@RequiredArgsConstructor(onConstructor = @__(@Inject))
public class FooService {
private final BarService barService;
}
我对该功能的问题是它似乎破坏了 IntelliJ 中的 Spring IDE 支持:
BarService
的实现)。如果我是唯一的开发人员,我只会使用第一个版本并完成它。但是,我发现我们的代码库中越来越多的代码已迁移到 Lombok 构造函数样式。所以,我很好奇:
是否可以将 IDEA 中完整的 Spring 支持与 Lombok
onConstructor = @__(@Inject)
构造函数结合使用?
lombok 注释
@RequiredArgsConstructor
将执行基于构造函数的依赖注入。
@Service
@RequiredArgsConstructor
public class FooService {
private final BarService barService;
}
Java 17 之后
record
也会这样做 -
@Service
public record FooService(BarService barService) {
}
使用
@RequiredArgsConstructor
注释代替。它将自动连接您所有的 final
字段。 @Inject
注释不是很有用。
@Service
@RequiredArgsConstructor
public class FooService {
private final BarService barService;
}