当前位置: 首页 > 知识库问答 >
问题:

如何动态注入Spring bean(原型范围)

夏侯博
2023-03-14

我正在使用 Spring 3.1.1,在我的业务逻辑中,我有一个循环,每次迭代都需要一个新的 Spring bean(原型范围)实例。

最好的方法是什么?我是否必须创建自己的 BeanFactory 类,我可以将其注入一次到我的类中,并且每次都调用它来生成 bean?在查看 Spring 3 文档时,它似乎暗示我应该改用 ApplicationContext。但是,使用ApplicationContext使我的代码依赖于Spring。

对于这样的事情,最好的方法是什么?Spring是否已经提供了一个我可以利用的工厂?

共有3个答案

宗涵蓄
2023-03-14

您可以使用自定义作用域并使注入bean代理,并且在自定义作用域bean上侦听一些可以注入underlines代理bean的动态事件

荆哲
2023-03-14

我想你应该和Spring一起去。Spring满足了你的需求。您可以使用一个方法从应用程序上下文中查找特定类型的bean。所以如果你把这个bean做成原型。然后,当您调用这个特殊方法时,将返回所需bean的新实例。

你会在这里找到它的细节!

杨无尘
2023-03-14

ApplicationContext是工厂。您不必将其注入到类中;实例化一个并使用它创建bean并连接它们的依赖关系。

我不理解“使用ApplicationContext使我的代码依赖于Spring”这句话。你认为DI值不值得?

 类似资料:
  • 我正在编写单元测试,有一个非常复杂的设置。 依赖bean设置一些侦听器,并将它们传递给自动连线服务。 我想测试侦听器是否存在,但不调用它们,因此我想传递'null'而不是自动连线服务。(特别是:我没有二传手…) 请注意,SUT确实间接依赖于返回侦听器的类。 因为这是一个来自大设置的非常小的示例,所以我不想在这里使用mock,因为我只想测试侦听器的存在性而不是行为。 嘲笑20或30个这样的服务会大大

  • 问题内容: 运行期间是否可以注入示波器或控制器?或任何其他建议将服务动态注入控制器? 提前致谢 问题答案: 可以使用$ injector 将服务动态(按名称)注入到控制器中。能够通过控制器参数注入服务只是Angular提供的一种便利。在后台,Angular使用$ injector来检索对象实例。但是我们也可以自己使用$ injector。 小提琴。

  • 我使用和注释来注入一个原型bean。 然而,注入bean的行为类似于单例bean。有没有办法在mockito中注入一个原型范围bean? 我正在使用运行JUnit,并使用运行初始化模拟。

  • 我有几个EJB3。x无状态会话bean,未定义接口。我需要将这些bean注入到Springbean中,但我无法这样做。 无接口EJB: 我的豆子: 还有我的豆子。xml 在初始化Spring容器时,我得到以下错误: 异常本身非常清楚——spring容器期望MyBean有一个本地接口视图作为其业务接口;但是,我没有(也不能介绍)。 非常感谢您的帮助!

  • 问题内容: 我正在使用一个已定义的拦截器,我想从拦截器中通过DAO层进行db调用,所以我如何将Spring bean注入到struts拦截器中。是否可以将spring bean注入到struts拦截器中,任何人都可以提出任何想法在此。 问题答案: 编辑 由于不需要将拦截器声明为Spring bean,因此删除了不必要的部分。感谢@AleksandrM对其进行测试。 就像使用Actions一样,(如