use*_*700 5 schema spring-batch
我想使用不同的架构来保存 Spring Batch 表。我可以看到我的新数据源设置在JobRepositoryFactoryBean. 但这些表仍然是在我有业务表的其他 shcema 中创建的。我读到了一些可以用来dataSource.setValidationQuery改变模式的地方,但仍然不起作用。我可以解决这个问题。下面是JobRepositoryFactoryBean和Datasource道具。
@Bean
@Qualifier("batchDataSource")
protected JobRepository createJobRepository() throws Exception {
JobRepositoryFactoryBean factory = createJobRepositoryFactoryBean();
factory.setDataSource(getDataSource());
if (getDbType() != null) {
factory.setDatabaseType(getDbType());
}
factory.setTransactionManager(getTransactionManager());
factory.setIsolationLevelForCreate(getIsolationLevel());
factory.setMaxVarCharLength(maxVarCharLength);
factory.setTablePrefix(getTablePrefix());
factory.setValidateTransactionState(validateTransactionState);
factory.afterPropertiesSet();
return factory.getObject();
}
spring.datasource.url=url
spring.datasource.username=username
spring.datasource.password=pwd
spring.datasource.driver-class-name:oracle.jdbc.driver.OracleDriver
spring.datasource.validation-query=ALTER SESSION SET
CURRENT_SCHEMA=schemaname
#batch setting
spring.batch.datasource.url=burl
spring.batch.datasource.username=busername
spring.batch.datasource.password=bpwd
spring.batch.datasource.driver-class-name:oracle.jdbc.driver.OracleDriver
spring.batch.datasource.validation-query=ALTER SESSION SET
CURRENT_SCHEMA=batchschema
org.apache.tomcat.jdbc.pool.DataSource dataSource = new org.apache.tomcat.jdbc.pool.DataSource();
dataSource.setName("batchDataSourceName");
dataSource.setDriverClassName(batchDataSourceProperties.getDriverClassName());
dataSource.setUrl(batchDataSourceProperties.getUrl());
dataSource.setUsername(batchDataSourceProperties.getUsername());
dataSource.setPassword(batchDataSourceProperties.getPassword());
// dataSource.setValidationQuery(batchDataSourceProperties.getValidationQuery());
Run Code Online (Sandbox Code Playgroud)
application.properties中的以下属性对我有用。这将在数据库中的 new_schema 下创建元架构表。
spring.batch.tablePrefix=new_schema.BATCH_
Run Code Online (Sandbox Code Playgroud)
以下是我正在使用的 springBoot 版本。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
Run Code Online (Sandbox Code Playgroud)
使用 Spring Batch 时@EnableBatchProcessing,DataSourceSpring Batch 表使用的表是BatchConfigurer. DataSource如果您在应用程序中使用多个接口,则必须创建自己的接口BatchConfigurer(通过扩展DefaultBatchConfigurer或实现接口),以便 Spring Batch 知道要使用哪一个。您可以在此处的参考文档中阅读有关此自定义的更多信息: https: //docs.spring.io/spring-batch/4.0.x/reference/html/job.html#configuringJobRepository
| 归档时间: |
|
| 查看次数: |
14885 次 |
| 最近记录: |