在Spring容器不管理的对象中使用Spring bean的正确方法是什么?

时间:2010-07-12 15:16:20

标签: java spring dependency-injection

我有一个Spring bean(如果重要的话就是单例范围),我们称之为FooService。

我有一个不受Spring管理的对象Bar,但它想要使用FooService。

如何以最佳方式实施此合作? (我们假设我不喜欢applicationContext.getBean())的解决方案。

4 个答案:

答案 0 :(得分:1)

在Bar构造函数中调用“new”并创建一个FooService实例供它使用。

答案 1 :(得分:1)

如果您希望在非IoC容器创建的对象中注入依赖项,则可以选择AOP。看一下Spring的@Configurable - 我会粘贴一个关于该主题的Stack Overflow问题的链接,但我的cut-n-paste目前已被破坏。

答案 2 :(得分:0)

Spring bean理想情况下是Plain Old Java Object或POJO。如果它不是Spring管理的,那么你必须自己管理它。理想情况下调用new或类似getInstance方法的内容,然后自行跟踪引用。

答案 3 :(得分:0)

谁在构建Bar实例?你没有提到这个。

如果Bar实例需要FooService,则必须使用构造函数或setter注入将后者注入Bar

如果你想让FooService由Spring管理,而不是Bar,那么你真的只有几个选项:

  1. 在构造Bar实例的代码中,从applicationContext
  2. 向其传递对FooService的引用
  3. 同样简单 - 使用Spring来管理Bar实例的生命周期。