我在项目A中有一个名为Customer的bean。在项目B中,我将项目A作为maven依赖项。
在项目B的Java Config(@Configuration)中,我试图获得一个名为CustomerImpl的bean Customer的新实现。
@Bean
public Customer customer() {
return new CustomerImpl()
}
客户是这里的一个班级。
但是我的上下文总是有Customer而不是我想要的CustomerImpl。
当我在上面的配置中放置@Qualifier并使用该限定符名称而不是customer()时,它的工作正常。但我不想指定限定符。
答案 0 :(得分:0)
在评论中,您说客户是一个班级。
尝试将customer()
方法中的返回类型定义为接口(例如ICustomer),而不是类。使Customer和CustomerImpl都实现该接口。
@Bean
public ICustomer customer() {
return new CustomerImpl()
}
答案 1 :(得分:0)
给两个bean提供不同的名称,例如
@Bean(name=customerImpl)
public Customer customerImpl() {
return new CustomerImpl()
}
并使用该名称获取您想要的实例,例如
@Resource(name=customerImpl)
private Customer customer;
答案 2 :(得分:0)
问题已解决。做了2个改变。添加了@Primary并提供了不同的方法名称
@Primary
@Bean
public Customer newMethodName() {
return new CustomerImpl()
}