Spring Batch具有自己的数据库架构。 我的应用程序具有自己的数据库架构。
我想将它们分开存放在不同的数据库中,以便spring-batch表不在我的应用程序数据库内。
默认情况下,spring-boot仅支持连接到单个数据库。如何配置它,以便所有与spring-batch相关的操作都进入spring- batch数据库,而我所有的代码都进入我的应用程序数据库?
我正在使用最新的spring-boot 1.2.2。
好吧,这就是我的方法。
在application.properties中
### Database Details datasource.app.driverClassName=oracle.jdbc.driver.OracleDriver datasource.app.url=jdbc:oracle:thin:@//localhost:1521/xe datasource.app.username=YOUR_APP_DB_USERNAME datasource.app.password=YOUR_PASSWORD datasource.batch.driverClassName=oracle.jdbc.driver.OracleDriver datasource.batch.url=jdbc:oracle:thin:@//localhost:1521/xe datasource.batch.username=YOUR_BATCH_DB_USERNAME datasource.batch.password=YOUR_PASSWORD
然后在您的@Configuration课程中添加以下bean
@Configuration
@Primary @Bean @ConfigurationProperties(prefix = "datasource.app") public DataSource appDataSource() { return DataSourceBuilder.create().build(); } @Bean @ConfigurationProperties(prefix = "datasource.batch") public DataSource batchDataSource() { return DataSourceBuilder.create().build(); } @Bean public JobLauncher jobLauncher() throws Exception { SimpleJobLauncher jobLauncher = new SimpleJobLauncher(); jobLauncher.setJobRepository(jobRepository()); return jobLauncher; } @Bean public JobRepository jobRepository() throws Exception { DataSourceTransactionManager batchTransactionManager = new DataSourceTransactionManager(); batchTransactionManager.setDataSource(batchDataSource()); JobRepositoryFactoryBean jobRepositoryFactoryBean = new JobRepositoryFactoryBean(); jobRepositoryFactoryBean.setTransactionManager(batchTransactionManager); jobRepositoryFactoryBean.setDatabaseType("ORACLE"); jobRepositoryFactoryBean.setIsolationLevelForCreate("ISOLATION_DEFAULT"); jobRepositoryFactoryBean.setDataSource(batchDataSource()); jobRepositoryFactoryBean.afterPropertiesSet(); return jobRepositoryFactoryBean.getObject(); }