从初始化的bean对象获取限定符名称

时间:2019-09-20 06:29:12

标签: spring spring-boot

我有两个相同类型的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"]?

2 个答案:

答案 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;