我有 SomeStartegy 接口(interface),有两个实现:
@Primary
@Component
public class OneStrategy implements SomeStrategy {...}
@Component
public class SecondStrategy implements SomeStrategy {...}
我需要其中一个用作默认(主要)实现,而另一个在某些情况下覆盖默认值。
所以我写了这样的东西:
public class SuperClass {
@Autowired
SomeStrategy strategy;
}
public class SubClass extends SuperClass {
@Autowired
public SubClass(SecondStrategy secondStrategy) {
this.strategy = secondStrategy;
}
}
注入(inject)子类,我可以在调试中看到它的 ctor 被调用,并且分配按照我的预期完成。
然而,不知何故,它最终以 OneStrategy 的实例代替。
我在这里缺少什么?还是我做错了?
最佳答案
字段注入(inject)是在构造函数注入(inject)之后进行的。
也对父类(super class)使用构造函数注入(inject),并从子类构造函数中调用 super(secondStrategy)
。
关于java - Spring @Autowired 构造函数被覆盖/忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34138041/