Создание Spring Bean из базы данных - PullRequest
0 голосов
/ 16 ноября 2018

Я использую @Configuration для настройки создания bean-компонента RestTemplate, которому требуется некоторая информация, такая как API-ключ, хост и т. Д.

Дело в том, что мне нужно иметь возможность создать числобинов, соответствующих количеству API-ключей, извлеченных из базы данных.

Мой код прямо сейчас выглядит следующим образом:

@Configuration
public class DandomainProperties {
    private String apiKey;
    private String host;
    private String ordersPath;
    private String orderPath;
    private String manufacturerPath;
    private DanDomainRestTemplate danDomainRestTemplate;


@Bean
DanDomainRestTemplate danDomainRestTemplate(RestTemplateBuilder restTemplateBuilder) {
    return restTemplateBuilder
            .basicAuthentication("", this.apiKey)
            .build(DanDomainRestTemplate.class);
}

Так что в принципе мне нужно изменить конфигурацию изатем создайте соответствующий бин RestTemplate, любое количество раз.

1 Ответ

0 голосов
/ 16 ноября 2018

Насколько я знаю из вашего вопроса, вы хотите создать restTemplate для каждой отдельной ситуации, может быть, вы могли бы заменить поставщика bean-компонента @Configuration на Service, который предоставляет различные типы apis?

Например:

@Service
public class DandomainApiProvider {
    @Autowired
    private ApiRepository apiRepository;
    @Autowired
    private DanDomainRestTemplate danDomainRestTemplate;


DanDomainRestTemplate restTemplateOf(String queryId) {
    // Fetch apikeys from DB by repository
    String apiKey = apiRepository.queryApiKey(queryId);
    return restTemplateBuilder
            .basicAuthentication("", apiKey)
            .build(DanDomainRestTemplate.class);
}

С DanDomainRestTemplate ваша собственная реализация и ApiRepository некоторые определения, такие как:

public interfadce ApiRepository {
    // Query apiKey by ID
    String queryApiKey(String queryId);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...