Spring中如何给自实例化的对象注入依赖?

新手上路,请多包涵

假设我们有一个类:

 public class MyClass {
    @Autowired private AnotherBean anotherBean;
}

然后我们创建了这个类的一个对象(或者其他一些框架已经创建了这个类的实例)。

 MyClass obj = new MyClass();

是否仍然可以注入依赖项?就像是:

 applicationContext.injectDependencies(obj);

(我认为 Google Guice 有类似的东西)

原文由 Igor Mukhin 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 589
2 个回答

您可以使用 --- 的 AutowireCapableBeanFactory autowireBean() 方法来执行此操作。您将一个任意对象传递给它,Spring 会将其视为它自己创建的对象,并将应用各种自动装配点点滴滴。

要掌握 AutowireCapableBeanFactory ,只需自动装配:

 private @Autowired AutowireCapableBeanFactory beanFactory;

public void doStuff() {
   MyBean obj = new MyBean();
   beanFactory.autowireBean(obj);
   // obj will now have its dependencies autowired.
}

原文由 skaffman 发布,翻译遵循 CC BY-SA 2.5 许可协议

您还可以使用 @Configurable 注释标记您的 MyClass :

 @Configurable
public class MyClass {
   @Autowired private AnotherClass instance
}

然后在创建时它会自动注入它的依赖项。您还应该在应用程序上下文 xml 中包含 <context:spring-configured/>

原文由 glaz666 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题