【问题标题】:What will happen if I tried to instantiate spring bean manually如果我尝试手动实例化 spring bean 会发生什么
【发布时间】: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


【解决方案1】:

当手动实例化对象时,它就像一个普通的 Java 对象。

不涉及 Spring,因此所有“弹簧特性”(控制反转、依赖注入等)都不可用。

【讨论】:

    猜你喜欢
    • 2016-06-08
    • 1970-01-01
    • 1970-01-01
    • 2018-11-06
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 2017-10-16
    • 1970-01-01
    相关资源
    最近更新 更多