如何在Spring中将依赖关系注入到自实例化对象中?

2022-08-31 07:35:05

假设我们有一个类:

public class MyClass {
    @Autowired private AnotherBean anotherBean;
}

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

MyClass obj = new MyClass();

是否仍可以注入依赖项?像这样:

applicationContext.injectDependencies(obj);

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


答案 1

您可以使用 的方法执行此操作。你把它传递给一个任意的对象,Spring会把它当作它自己创建的东西,并应用各种自动布线的零碎部分。autowireBean()AutowireCapableBeanFactory

要获得 ,只需自动连接:AutowireCapableBeanFactory

private @Autowired AutowireCapableBeanFactory beanFactory;

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

答案 2

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

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

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


推荐