有两种注入构造函数的方法:
@Slf4j
@Component
@RequiredArgsConstructor (onConstructor = @_(@Inject))
public ClassA {
@NonNull private ClassB b;
}
另一种方法是使用Inject:
@Slf4j
@Component
public class ClassA {
private final ClassB b;
@Inject
public ClassA(ClassB b) {
this.b = b;
}
}
想知道有什么区别吗?
答案 0 :(得分:1)
是的,后者有很多代码:)。 Lombok在编译阶段做了一些magic,也许这两个字节码有些不同,但是结果字节码应该几乎相同,并且功能完全相同。
超出范围:请注意-根据具体情况-直接注入字段可能更加清楚:
@Inject
private final ClassB b;
与之不同的是,b
仅在构造函数执行后才被注入,为此,您需要使用@PostConstruct
创建方法,否则该方法应在构造函数。