简单的测试类显示我的问题:Spring无法解析List类型的bean的@Bean依赖项?
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = SpringTest.OptionalConfiguration.class)
public class SpringTest {
static class Item extends Object {}
@Configuration
static class OptionalConfiguration {
@Bean
List<Item> someString() {
return new ArrayList<>();
}
@Bean
Object foo(List<Item> obj) {
return new Object();
}
}
@Test
public void testThis() {
}
}
结果:
org.springframework.beans.factory.NoSuchBeanDefinitionException:发现依赖 [类型[SpringTest $项目]无 预选赛豆SpringTest $ Item的集合]:预计至少有1个bean,其中 有资格作为此依赖关系的自动导向候选。依赖 注解:{}
如果我改变从List<Item>
到Item
,工作的事情。
这是设计吗?任何解决方法?我需要提供一个List
项目 - 有时是空的,有时候还有项目,具体取决于运行时配置。
我知道,如果我指定类型为Item的bean,自动装配List<Item>
的作品。但是,我想要一个类型为List<Item>
的豆子(或者如果我不能那样做,请拨打List
)。
使用Spring 4.2.4。
Spring的源代码通常非常清晰 - 可能需要查看该异常的堆栈跟踪,在查找合格Bean的位置查找代码,以及查看它的功能。开源的万岁! – slim
使用'@ Qualifier'是否有用? – CollinD
@CollinD - 我刚刚用'@ Qualifier'试过 - 不,它没有帮助。 – slim