Spring如何选择@Autowired列表的实现
如果我在Spring应用程序中使用以下代码将实现相同接口的多个bean注入到列表中:Spring如何选择@Autowired列表的实现,spring,spring-boot,Spring,Spring Boot,如果我在Spring应用程序中使用以下代码将实现相同接口的多个bean注入到列表中: @Autowired List<SomeType> mylist; @Autowired 列出我的清单; 我可以通过反射看到mylist的类型是java.util.ArrayList Spring如何准确地选择java.util.List接口的这个实现,以及如何改变这个行为?根据bean名称 例如,假设您正在配置两个相同类型的bean: @Bean public List<SomeType
@Autowired
List<SomeType> mylist;
@Autowired
列出我的清单;
我可以通过反射看到mylist
的类型是java.util.ArrayList
Spring如何准确地选择java.util.List
接口的这个实现,以及如何改变这个行为?根据bean名称
例如,假设您正在配置两个相同类型的bean:
@Bean
public List<SomeType> listA(){
// Init and return listA here
}
@Bean
public List<SomeType> listB(){
// Init and return listB here
}
您将看到它将自动连接到listA
,而以下内容将自动连接到listB
:
@Autowired(value = "listB") List<SomeType> listB;
@Autowired(value=“listB”)列表listB;
由于注入特性(示例有序元素),我认为spring没有为列表实现提供钩子。我会用简单的方法->将ArrayList转换为您需要的内容。我认为这是关于如何填充列表
,如果您从@Bean`方法返回一个ArrayList,那么它将是一个ArrayList
。我认为这不是OP要问的问题。他想知道为什么Spring选择ArrayList
作为List
接口的实现。哦,是的,很抱歉完全误解了。
@Autowired(value = "listB") List<SomeType> listB;