我有一个java接口(interface),说ITest由两个类Class1和Class2实现。现在我有一个工厂类,我用它来决定返回哪个实现。就像
if(something)
return new Class1()
else
return new Class2()
问题是我在 Class1 中有 Autowiring 字段,它没有被实例化,但相同的 Autowiring 在通过 Autowiring 实例化的其他类中也有效。
这是 Class1 的代码
@Componene
public Class1 implements ITest{
@Autowired
private SomeClass obj;
}
不知道如何解决这个问题。由于 SomeClass 的 Autowiring 在其他类中工作得很好。
最佳答案
在工厂类中注入(inject) applicationContext 并使用它来创建 Bean:
@Autowired private ApplicationContext applicationContext;
......
......
if(something){
return applicationContext.getBean("com.xyz.Class1");
}
......
......
或者您可以在 Class1 和 Class2 之上使用 @Configurable
。这需要启用 AspectJ 编织。当您使用 new 时,Spring 将神奇地创建 bean。
关于java - 手动创建实例时如何使@autowire在spring中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48418516/