@Component
public class A<K, V> {
@Autowired
// spring unable to inject this, @Qualifier can not use here
private B<K, V> b;
}
public class B<K, V>{}
@Configuration
public class ConifgA {
@Bean
@Qualifier("int_a")
public A<Integer, Integer> getA1() { return new A<>(); }
@Bean
@Qualifier("int_a")
public A<String, String> getA2() { return new A<>(); }
}
@Configuration
public class ConifgB {
@Bean
public B<Integer, Integer> getB1() { return new B<>(); }
@Bean
public B<String, String> getB2() { return new B<>(); }
}
@Component
class C {
@Autowired
@Qualifier("int_a")
A<Integer, Integer> ia;
@Autowired
@Qualifier("str_a")
A<String, String> sa;
}
我无法手动新建b()并将其传递给a的ctor,因为b包含spring注入的数据成员
1条答案
按热度按时间f1tvaqid1#
@Qualifier
通常与@Autowired
当上下文中有多个具有共享接口的bean示例时,按名称指定单个bean候选者。如果希望注入所需的bean名称,只需在@Bean
作品。我编写了一个适用于您的场景的测试类: