@Configurable
public TestClass(){
@Autowired SomeOtherClass otherClass;
public TestClass(Var1 var){
System.out.println(otherClass);
}
}
我使用编译时编织并调用new testClass(var)
。我在构造函数上使用依赖注入,如上面的“otherClass”。它打印出'null'。从我的测试中,依赖注入'otherClass'无法在构造函数中初始化。我该怎么做才能允许依赖注入“构造函数”?
答案 0 :(得分:1)
请查看Spring文档的this部分中的注释。
它显示了@Configurable
属性,用于在构造函数中的代码之前强制注入。
@Configurable(preConstruction=true)
将该属性添加到上面的代码中会使System.out.println(otherClass);
停止为null
。
答案 1 :(得分:0)
我猜(但不知道100%)Autowirering在创建对象后发生。 (我的意思是我知道正常的Spring Bean,普通的类,但@Configurable 不是100%)
这意味着您无法期望在创建对象时已经填充了Autowired字段。
如果添加在创建后调用的第二个方法printStats,则可以检查此项。
public class TestClass {
...
public void printStats(){
System.out.println(otherClass);
}
}
...
new TestClass(var).printStats();
答案 2 :(得分:0)