spring 将@Lazy与@RequiredArgsConstructor一起使用

wtlkbnrh  于 2023-02-18  发布在  Spring
关注(0)|答案(1)|浏览(503)
...
@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一起使用

gzszwxb4

gzszwxb41#

这是不一样的,当你把@Lazy放在构造函数上时,它会导致为所有受影响的依赖项创建一个延迟解析代理,也就是说,在第一种情况下,注入到构造函数中的bc都被延迟解析。
在第二种情况下,仅延迟解析c
参见Is using @Lazy on a component constructor equal to annotating every argument?
我想将@Lazy与@RequiredArgsConstructor一起使用
使用第一种方法。
顺便说一句,在第一种情况下,在构造函数上有@Lazy使得@Lazyprivate final C c;上冗余。

相关问题