首页 > 解决方案 > 自动装配泛型类的所有bean

问题描述

我有以下类层次结构:

public class Base {}
public class A extends Base {}
public class B extends Base {}

public class MyClassDefinition<T extends Base>  {}

然后我MyClassDefinition在一个@Configuration类中创建几个bean:

@Configuration
public class MyConfiguration {

    @Bean
    public MyClassDefinition<A> aMyClassDefinition {
        return new MyClassDefinition<A>();
    }

    @Bean
    public MyClassDefinition<B> aMyClassDefinition {
        return new MyClassDefinition<B>();
    }
} 

现在我需要获取所有MyClassDefinition<T extends Base>bean 的列表:

public class SomeClass {

    @Autowired
    private Map<String, MyClassDefinition<Base>> definitions;

}

不幸的是,它不起作用并引发异常:

No qualifying bean of type 'java.util.Map<String, MyClassDefinition<Base>>' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

有什么想法有什么问题吗?

标签: javaspringdependency-injectionautowired

解决方案


推荐阅读