如何注入依赖到一个自我实例化的对象在spring?

假设我们有一堂课:

public class MyClass { @Autowired private AnotherBean anotherBean; } 

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

 MyClass obj = new MyClass(); 

是否有可能仍然注入依赖关系? 就像是:

 applicationContext.injectDependencies(obj); 

(我认为谷歌Guice有这样的东西)

您可以使用AutowireCapableBeanFactoryautowireBean()方法执行此操作。 你把它传递给一个任意的对象,Spring会把它当作自己创build的东西来处理,并且会应用各种自动assembly的东西。

要获得AutowireCapableBeanFactory ,只需自动装入:

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

你也可以使用@Configurable标注来标记你的MyClass:

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

然后在创build时它会自动注入它的依赖关系。 你也应该在你的应用上下文中使用<context:spring-configured/> xml。

不是没有一些解决方法,因为Spring对这个实例一无所知。

真正的问题是:你为什么要创build一个类的实例,你想手动注入依赖项,而不是让Spring控制它呢? 为什么不使用MyClass类注入MyClass