我认为将bean注入自动检测到的bean列表:我介绍了几个实现相同接口的bean,并将它们作为List注入后面的bean中。
我无法找到与此功能相关的官方文档。我的单一来源是http://www.coderanch.com/t/605509/Spring/Java-config-autowired-List
考虑到这个特性,我遇到了Bean overring的问题:我想覆盖一个通过no-arg方法定义的bean,其中bean使用List of detected bean定义。但是,spring表现得像第二个bean定义不存在。
可以通过以下测试复制:
import java.util.Date;
import java.util.List;
import org.junit.Assert;
import org.junit.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
public class SpringTest {
@Test
public void shouldtestSpringDifferentMethodNames() {
AnnotationConfigApplicationContext ctx2 = new AnnotationConfigApplicationContext(AConfig.class, CConfig.class);
Assert.assertEquals("overriden", ctx2.getBean("bean"));
}
@Configuration
public static class AConfig {
@Bean
public Object bean() {
return "not overriden";
}
}
@Configuration
public static class CConfig extends AConfig {
@Bean
public Date anotherBean() {
return new Date();
}
@Bean
public Object bean(List<? extends Date> someDate) {
return "overriden";
}
}
}
如果这是预期的行为,我怎样才能实现这样的重写?
答案 0 :(得分:1)
列表autowire的文档可在春季documentation找到
按ID或名称覆盖bean不是官方弹簧功能 - 请查看question以获取更多详细信息
答案 1 :(得分:0)
Spring团队认为这是一个错误:https://jira.springsource.org/browse/SPR-10988
最近的一份文件可以在http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/beans.html#beans-autowired-annotation找到(感谢Alexander Kudrevatykh为2.5来源)