[英]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.