我有一个使用它的postgres db的java spring应用程序,它没有概率。但我也有一个每小时运行的石英作业,并使用postgres同步来自其他mysql DS的数据。问题是JDBC连接字符串是动态的并且正在被更改,我不能在systemstartup等上指定它。如何优雅地执行此操作?我的意思是拿jdbc连接字符串,连接到db并从那里检索数据?我也在那里使用spring-data。
答案 0 :(得分:1)
一种可能的解决方案是使用弹簧批@JobScope bean并让您的石英作业启动弹簧批处理作业。
您可以将数据源配置为具有@JobScope,然后这将使spring在每次执行作业时创建该数据源。然后,您可以使用作业参数或其他变量来创建所需的特定数据源。创建这样的数据源的配置类的示例如下......
@Configuration
public class JobDatabaseConfiguration {
@Bean
@JobScope
public DataSource jobDataSource() throws IOException {
// set these from job parameters...
String jdbcUrl = "<your jdbc url>";
String driver = "<your driver>";
String user = "user";
String password = "password";
return DataSourceBuilder.create()
.driverClassName(driver)
.url(jdbcUrl)
.username(user)
.password(password)
build();
}
}