使用Java Config时的Spring批处理表前缀

时间:2016-05-25 12:08:18

标签: java spring spring-batch spring-java-config

My Spring Batch存储库(部署在Oracle数据库中)位于不同的模式中,因此我需要预先添加模式名称。

使用XML配置时,这很容易做到:

...
7     20100202        18         8
8     20100203         0         9
9     20100203         6       NaN
10    20100203        12       NaN   
11    20100203        18        11
12    20100204         0       NaN
13    20100204         6        12
...

然而,当我使用Java Config时,事实证明这更棘手。 我找到的最佳解决方案是使用我的Java Config类<job-repository id="jobRepository" table-prefix="GFA.BATCH_" /> 并覆盖extend DefaultBatchConfigurer方法:

createJobRepository()

与XML解决方案相比,这几乎是代码!而且它也不合逻辑 - 我的第一个猜测是提供如下的@Configuration @EnableBatchProcessing public class BatchConfiguration extends DefaultBatchConfigurer{ @Autowired private DataSource dataSource; @Autowired private PlatformTransactionManager transactionManager; @Override protected JobRepository createJobRepository() throws Exception { JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean(); factory.setDataSource(dataSource); factory.setTransactionManager(transactionManager); factory.setTablePrefix("GFA.BATCH_"); factory.afterPropertiesSet(); return factory.getObject(); } ... } 方法:

@Bean

但这不起作用。

我的问题是: 我的解决方案是最优的还是有更好的解决方案?我宁愿定义一个Bean,而不是必须覆盖一些不太直观的类的方法... 显然,如果我们可以将代码缩短到与XML配置中的单行代码有点接近,那就更好了。

1 个答案:

答案 0 :(得分:4)

只需将此行添加到批量配置中注册的任何属性文件中:

spring.batch.table-prefix= GFA.BATCH_

仅供参考,前缀spring.batch与Spring引导提供的org.springframework.boot.autoconfigure.batch.BatchProperties映射。请参阅源代码on github