我正在使用@Configuration来配置RestTemplate bean的创建,它需要一些信息,例如API密钥和主机等。
问题是,我需要能够制作许多与数据库中获取的API密钥相匹配的bean。
我的代码现在看起来像这样:
@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 bean,任意次。
答案 0 :(得分:0)
据您所知,您想为每种情况创建一个restTemplate,也许您可以将@Configuration bean提供程序替换为提供各种API的服务?
例如:
@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);
}