...
@RequiredArgsContructor(onConstructor_ = {@Lazy})
Class A{
private final B b;
@Lazy
private final C c;
}
Class A{
private final B b;
private final C c;
A(B b,@Lazy C c){
this.b = b;
this.c = c;
}
}
是否相同?
我想将@Lazy与@RequiredArgsConstructor一起使用
我想将@Lazy与@RequiredArgsConstructor一起使用
1条答案
按热度按时间gzszwxb41#
这是不一样的,当你把
@Lazy
放在构造函数上时,它会导致为所有受影响的依赖项创建一个延迟解析代理,也就是说,在第一种情况下,注入到构造函数中的b
和c
都被延迟解析。在第二种情况下,仅延迟解析
c
。参见Is using
@Lazy
on a component constructor equal to annotating every argument?我想将@Lazy与@RequiredArgsConstructor一起使用
使用第一种方法。
顺便说一句,在第一种情况下,在构造函数上有
@Lazy
使得@Lazy
在private final C c;
上冗余。