Spring Java Config - @Bean Overriding Bean定义不起作用

时间:2015-10-07 15:44:05

标签: java spring spring-mvc spring-java-config spring-bean

我在项目A中有一个名为Customer的bean。在项目B中,我将项目A作为maven依赖项。

在项目B的Java Config(@Configuration)中,我试图获得一个名为CustomerImpl的bean Customer的新实现。

@Bean
public Customer customer() {
return new CustomerImpl()
}

客户是这里的一个班级。

但是我的上下文总是有Customer而不是我想要的CustomerImpl。

当我在上面的配置中放置@Qualifier并使用该限定符名称而不是customer()时,它的工作正常。但我不想指定限定符。

3 个答案:

答案 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()
}