首页 > Java > java教程 > 正文

为什么在 Spring 中调用 `ApplicationContext.getBean()` 被认为是不好的做法?

Susan Sarandon
发布: 2024-11-27 08:02:09
原创
139 人浏览过

Why is Calling `ApplicationContext.getBean()` in Spring Considered Bad Practice?

为什么不鼓励在 Spring 中调用 ApplicationContext.getBean()

在 Spring 中调用 ApplicationContext.getBean() 被认为是不好的做法,因为它违反了控制反转的原则( IoC)。

控制和依赖的反转注入

IoC 和依赖注入是 Spring 设计的基础。 IoC 封装了这样一个概念:对象不应该负责创建或定位它们的依赖关系。相反,这些依赖项应该由外部源提供。

依赖注入 (DI) 是 Spring 自动将这些依赖项注入到协作对象中的机制。这允许松散耦合,其中对象不依赖于其依赖项的特定实现。

getBean() 的问题

调用 getBean() 直接违背了这些原则:

  • 紧密耦合:调用 getBean() 的对象与 Spring 容器紧密耦合。他们知道并关心如何提供依赖项,这使得它们难以测试和重构。
  • 绕过依赖管理:通过使用 getBean(),对象绕过 DI 机制并直接访问 Spring 容器。这可能会导致注入不正确的依赖项或潜在的运行时错误。
  • 可测试性降低:依赖 getBean() 的对象无法轻松地进行单独测试。无法注入模拟或存根实现,这使得测试这些对象的行为变得困难。

getBean() 的替代方法

开发人员应使用以下方法,而不是直接调用 getBean()方法:

  • 构造函数注入:将依赖项作为参数传递到构造函数。 Spring会自动注入相应的bean。
  • Setter注入:在协作对象中定义setter方法,并使用Spring的; XML配置中的标签或Java中的@Autowired注释来指定依赖关系。
  • 字段注入:使用@Autowired注释字段成员,但应谨慎使用,因为它可能会导致可见性问题。

通过遵循这些实践,开发人员可以实现松耦合、简化测试并确保 Spring 的稳健性应用程序。

以上是为什么在 Spring 中调用 `ApplicationContext.getBean()` 被认为是不好的做法?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板