【问题标题】:Inject class object based on generic type using Spring使用 Spring 注入基于泛型类型的类对象
【发布时间】:2014-02-16 07:41:33
【问题描述】:

我有一个关于 Spring 注入的问题。

我有一个使用泛型类型参数定义的类。我想知道是否可以注入 T 类型的类对象(我的意思是 T.class)?

像这样:

@Component
public class MyExecutor<T> {
    @Autowired
    public MyExecutor(<Inject class object of T>) {
         ....
    }
}

非常感谢。

【问题讨论】:

    标签: java spring dependency-injection


    【解决方案1】:

    那个具体的例子是行不通的,但是还有另一种方法可以使用泛型创建 bean,并在将 bean 注入其他 bean 时保持类型。

    Spring 4 在 Java 配置中扩展了对泛型的支持。现在可以定义两个仅在使用的泛型参数上有所不同的 bean,并按类型将它们注入另一个 bean,请参见 JIRA

    @Configuration
    public class Config {
    
        @Bean("beanA")
        public MyExecutor<A> beanA() {
             return new MyExecutor<A>(A.class);
        }
    
        @Bean("beanB")
        public MyExecutor<B> beanB() {
             return new MyExecutor<B>(B.class);
        }
    }
    

    那么就可以按类型注入beanA或者beanB了:

    @Component
    public class OtherClass {
    
        @Autowired
        private  MyExecutor<A> beanA;
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多