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

标签 java mysql spring

我有一个java spring应用程序,它使用它的postgres db,这没有问题。而且我还有一个每小时运行一次的quartz 作业,并将来自其他 mysql DS 的数据与 postgres 同步。问题是 JDBC 连接字符串是动态的并且正在更改,我不能只在系统启动等上指定它。如何优雅地做到这一点?我的意思是采用 jdbc 连接字符串,连接到数据库并从那里检索数据?我也在那里使用 spring-data。

最佳答案

一种可能的解决方案是使用 Spring Batch @JobScope beans 并让您的quartz作业启动 Spring Batch 作业。

您可以将数据源配置为具有@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();
    }
}

关于java spring 连接到 mysql 数据库(不是 JNDI 池或系统数据源!),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43594812/

相关文章:

java - Springboot测试在Junit 5中加载ApplicationContext失败

java - 类加载器需要解释

MySQL 从另一个表插入带有 2 个选项的 WHERE 语句

java - 将 spring mvc 添加到 spring java "desktop"应用程序

java - ClassPathResource 没有得到类路径

java - Spring-MVC web.xml 文件不使用 ContextLoaderListener

java - 绑定(bind)中的 JAXB 空节点

java - 强制方法调用以避免抛出异常

php - MySQL选择百万条记录生成url

mysql - 查询按范围限制对记录进行分组