簡體   English   中英

從數據庫創建Spring Bean

[英]Spring Bean creation from database

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

據您所知,您想針對每種情況創建一個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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM