Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring如何选择@Autowired列表的实现_Spring_Spring Boot - Fatal编程技术网

Spring如何选择@Autowired列表的实现

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

如果我在Spring应用程序中使用以下代码将实现相同接口的多个bean注入到列表中:

@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;