我想在@Configuration注释的AppConfig中创建Spring的动态列表:
@Bean
List<SomeObject> createSomeObjects(@Value("${object.count}") final int objectCount) {
List<Object> objects = new ArrayList<>();
for (int i = 1; i <= objectCount; i++) {
objects.add(new SomeObject())
}
return objects;
}然后,我想将这个对象列表插入到另一个bean中,如下所示:
@Autowired
List<SomeObject> objects;我得到的是以下例外:
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: java.util.List ..我可以为我的对象列表创建某种容器,但我正在寻找一个更优雅的解决方案。
发布于 2016-02-24 22:00:32
Spring专门处理集合,但这不起作用;容器总是将集合解释为单独声明的bean组。经过一些讨论和修改后,它将在4.3中工作。,但就目前而言,最好的解决方案是使用holder类。
发布于 2016-02-23 20:52:02
从Spring 4开始,泛型在自动装配过程中得到了充分的支持。。所以,只需更新Spring版本就可以了。
如果无法更新,只需使用bean名称自动更新:
@Bean(name = "someObjectsList")
List<SomeObject> createSomeObjects(@Value("${object.count}") final int objectCount) {
List<Object> objects = new ArrayList<>();
for (int i = 1; i <= objectCount; i++) {
objects.add(new SomeObject())
}
return objects;
}
@Autowired
@Qualifier("someObjectsList")
List<SomeObject> objects;发布于 2016-02-24 21:55:11
您的解决方案应该没有问题,但是创建bean的方法似乎不是公共的,所以它在配置类之外是不可见的。请参阅第3章. Bean的可见性
https://stackoverflow.com/questions/35584289
复制相似问题