Spring中是否可以将变量传递给@Qualifier注解?
例如,
@Autowried
@Qualifier("datasource_" + "#{jobParameters['datasource.number']}")
private DataSource ds;
我有 10 个不同的数据库,我的 Spring 批处理作业每天都在其中运行。数据库编号作为作业参数传递。我想根据作业参数定义要连接的数据源。
Thanks!
注释中只允许使用常量表达式。
因此,您要在 Spring 配置中创建 10 个数据源 - 您的工作是否需要在一次运行中使用所有 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);
...
}
}
还是我理解错了?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)