java - Spring Autowiring 泛型类型

标签 java spring generics inversion-of-control

Spring(从版本 4 开始)声称支持泛型类型注入(inject),我正在尝试做这样的事情:

public abstract class AbstractControl<T extends IService> {

@Autowired
private T service;

protected T getService(){
    return service;
}

public void setService(T service) {
    this.service = service;
}

}

然后是这个类的扩展:

public class FooControl extends AbstractControl<LoginService> {
}

但是 Spring 正在尝试注入(inject) IService。是否可以注入(inject)继承的类型?

最佳答案

尝试将@Autowired移动到子类中,如下所示:

  public abstract class AbstractControl<T extends IService> {

    private T service;

    protected T getService(){
        return service;
    }

    public void setService(T service) {
        this.service = service;
    }
  }

和子类:

public class FooControl extends AbstractControl<LoginService> {

   @Override
   @Autowired
   public void setService(LoginService service) {
        this.service = service;
    }
}

关于java - Spring Autowiring 泛型类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39358099/

相关文章:

java - Android fragment 问题

java - 使用 NetBeans GUI 构建器将数据保存在新 JTable(新 JFrame)上

java - 如何隐藏@RequestMapping 参数?

java - 从另一个异步方法调用的 Spring 异步方法

c# - 如何判断一个类是否实现了具有泛型类型的接口(interface)

java - Java Spring 和 Tomcat 并发文件下载速度慢

java - 如何将编码密码从服务器发送到电子邮件

java - 转换后的@PathVariables可以互相引用吗?

java - 如何从名称中获取任意枚举的实例作为字符串

从 NSObject 继承时,不会调用泛型中使用的 swift 子类