Получение имен квалификаторов из инициализированных объектов bean - PullRequest
1 голос
/ 20 сентября 2019

У меня есть два бина одного типа;

@Bean
public RestTemplate jsonTemplate() {
    return new RestTemplate();
}

@Bean
public RestTemplate xmlTemplate() {
    return new RestTemplate();
}

И я автоматически связываю оба бина в список следующим образом;

@Autowired
private List<RestTemplate> templates;

В списке templates будут оба бинавнутри с size=2.

Из этого списка, как я могу получить их имена (["jsonTemplate", "xmlTemplate"])?

Ответы [ 2 ]

2 голосов
/ 20 сентября 2019

Это было действительно просто ...

Просто делаю;

@Autowired
private Map<String, RestTemplate> templates;

позволит Spring вставлять имена в качестве ключей и сами бины в качестве значений на карте.

Кажется, Spring просто перестает следить за именами после инъекции.Так что я не знаю, есть ли другой способ (или, если возможно, более простой), чем этот?

0 голосов
/ 20 сентября 2019

Вы можете использовать карту бобов:

@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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...