java spring连接到mysql数据库(不是JNDI池或系统数据源!)

时间:2017-04-24 17:58:01

标签: java mysql spring

我有一个使用它的postgres db的java spring应用程序,它没有概率。但我也有一个每小时运行的石英作业,并使用postgres同步来自其他mysql DS的数据。问题是JDBC连接字符串是动态的并且正在被更改,我不能在systemstartup等上指定它。如何优雅地执行此操作?我的意思是拿jdbc连接字符串,连接到db并从那里检索数据?我也在那里使用spring-data。

1 个答案:

答案 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();
    }
}