我有两个实现的SomeStartegy接口:
@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;
}
}
注入SubClass,我可以在调试中看到它的ctor被调用,并且分配完成就像我期望的那样。 然而,不知何故,它最终会以OneStrategy的实例结束 我在这里错过了什么?或者我这样做是错的吗?
答案 0 :(得分:1)
构造函数注入后进行字段注入。
也为超类使用构造函数注入,并从子类构造函数中调用super(secondStrategy)
。