从数据库创建Spring Bean

时间:2018-11-16 08:12:30

标签: java spring spring-bean

我正在使用@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,任意次。

1 个答案:

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