0

我有两个相同类型的豆子;

@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"])?

4

2 回答 2

2

这真的很简单...

只是在做;

@Autowired
private Map<String, RestTemplate> templates;

将让 Spring 将名称作为键插入,将 bean 本身作为映射中的值插入。

似乎 Spring 只是在注入后停止跟踪命名。所以我不知道是否还有其他方法(或者,如果可能的话,更简单的方法)?

于 2019-09-20T06:44:11.027 回答
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;
于 2019-09-20T06:44:40.023 回答