【发布时间】:2021-11-03 09:48:10
【问题描述】:
阅读一些源代码,我偶然发现了这个 spring bean
@Service
public class ValidationService {...}
在许多地方使用new() 运算符手动实例化
例如:
var validationService=new ValidationService();
现在我正在考虑重构所有这些实例并用适当的弹簧注入替换它。
这让我想到如果我们使用 new() 运算符实例化一个 bean 会发生什么。它会创建一个新的 bean 实例,还是只检索 Spring 托管实例?
【问题讨论】:
-
如果你正在实例化对象,它不会是一个spring bean,而是一个简单的java对象。它不会由 spring 容器管理,您也不会受益于 spring 的优势。如果你想得到一个spring bean,你必须使用
applicationContext.getBean("myBeanDefinition")从spring 应用程序上下文中获取它。有几种方法可以访问应用程序上下文。请参阅this 问题。
标签: java spring dependency-injection