簡體   English   中英

在Spring中將變量傳遞給@Qualifier批注

[英]Passing variables to @Qualifier annotation in Spring

是否可以在Spring中將變量傳遞給@Qualifier批注?

例如,

@Autowried
@Qualifier("datasource_" + "#{jobParameters['datasource.number']}")
private DataSource ds;

我有10個不同的數據庫,我的Spring批處理每天都在其中運行。 數據庫號作為作業參數傳遞。 我想基於job參數定義要連接的數據源。

謝謝!

注釋中只允許使用常量表達式。

因此,您要在Spring配置中創建10個數據源-您的工作是否需要一次運行使用全部十個數據源? 如果您在Spring上下文的整個生命周期中只需要一個連接,那么您是否可以擁有10組不同的屬性文件?

您可以做的一件事是在地圖中創建所有數據源(以“數據庫號”作為鍵,然后將此地圖和密鑰注入到您的bean中,例如...

public class MyBean {
    @Autowired @Qualifier("dataSourceMap")
    private Map<String, DataSource> dataSourceMap;

    @Value("#{jobParameters['datasource.number']}")
    private String dbKey;

    public void useTheDataSource() {
        DataSource ds = dataSourceMap.get(dbKey);

        ...
    }
}

還是我誤會了?

不,您不能將變量傳遞給Java中的任何注釋。 與春天無關。

使用解決方法。 創建並傳遞一項服務,該服務將在每次需要時選擇正確的數據庫

暫無
暫無

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

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