java - Spring @Autowired 构造函数被覆盖/忽略

标签 java spring dependency-injection

我有 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/

相关文章:

java - 你如何在没有教程的情况下学习框架

java - 如何在java中通过鼠标移动来移动形状

java - 需要 Player 类中的玩家对象

java - 如何在 Kotlin 中实现可空 "beanName"的 BeanPostProcessor?

wpf - MVVM - View 真的需要有一个默认的构造函数吗?

java - 将字符串转换为 javax.json.JsonString 时出现问题

java - Spring MVC 可以严格地将查询字符串映射到请求参数吗?

java - 当代理阻止社交登录时如何通知用户?

dependency-injection - 多个项目中的asp.net 5依赖注入(inject)

c# - Net Core - 将配置应用于框架类