我有两个相同类型的bean;
@Bean
public RestTemplate jsonTemplate() {
return new RestTemplate();
}
@Bean
public RestTemplate xmlTemplate() {
return new RestTemplate();
}
然后我将两个bean自动连接到列表中;
@Autowired
private List<RestTemplate> templates;
列表templates
会将两个bean都包含在size=2
中。
如何从此列表中获得他们的名字(["jsonTemplate", "xmlTemplate"
]?
答案 0 :(得分:2)
这真的很简单...
只要做;
@Autowired private Map<String, RestTemplate> templates;
将让Spring将名称作为键插入,并将Bean本身作为值插入 地图。
似乎Spring在注入后只是停止跟踪命名。所以我不知道有没有其他方法(或者,甚至可能,更简单的方法)?
答案 1 :(得分:1)
您可以使用豆图:
@Bean
public Map<String, RestTemplate> templateMap(RestTemplate jsonTemplate, RestTemplate xmlTemplate) {
Map<String, RestTemplate> map = new HashgMap<>();
map.put("jsonTemplate", jsonTemplate);
map.put("xmlTemplate", xmlTemplate);
return map;
}
@Autowired
private Map<String, RestTemplate> templates;