在春天,考虑@Service
类,具有以下自动装配构造函数:
public DogService(@Lazy CatService catService, @Lazy MouseService mouseService) {
this.catService = catService;
this.mouseService = mouseService;
}
这相当于吗?
@Lazy
public DogService(CatService catService, MouseService mouseService) {
this.catService = catService;
this.mouseService = mouseService;
}
是的,这是等价的。
The @Lazy javadoc https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/annotation/Lazy.html状态 :
该注解除了用于组件初始化之外,
也可以放置在标有org.springframework.beans.factory.annotation.Autowired
or
javax.inject.Inject
:在这种情况下,它导致创建一个
作为替代方案,所有受影响的依赖项的惰性解析代理
到using org.springframework.beans.factory.ObjectFactory
or
javax.inject.Provider
.
重要的部分是:
它会导致为所有受影响的人创建一个延迟解析代理
依赖关系
就依赖关系而言,你的DogService
无论如何,bean 有两个自动装配:CatService catService
and MouseService mouseService
.
因此,单独注释构造函数或所有参数将产生相同的结果:两个依赖项将被延迟加载。
Note:我已经测试过它们,两种情况下的行为完全相同。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)