My Spring Batchリポジトリ(Oracleデータベースにデプロイされている)は、別のスキーマにあり、スキーマ名の前に置く必要があります。 XML構成を使用する場合Java Configを使用する場合のSpringバッチ・テーブル・プレフィックス
、これを行うのは簡単だろう:私はJavaのコンフィグレーションを使用するよう
<job-repository id="jobRepository" table-prefix="GFA.BATCH_" />
しかし、これはよりトリッキーであることが判明しました。 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();
}
...
}
が、それはかなりのコードです: 私が見つけた最良の解決策は、私のJava Configクラスextend DefaultBatchConfigurer
を持っているとcreateJobRepository()
メソッドをオーバーライドすることです!そして、それはどちらかあまりにも論理的ではありません - 次のように私の最初の推測では、@Bean
方法を提供することであった:
@Bean
public JobRepository jobRepository() throws Exception {
JobRepositoryFactoryBean factory = new JobRepositoryFactoryBean();
factory.setDataSource(dataSource);
factory.setTransactionManager(transactionManager);
factory.setTablePrefix("GFA.BATCH_");
factory.afterPropertiesSet();
return factory.getObject();
}
をが、これは動作しません。
私の質問は 私の解決策は最適か、それとも良いですか?私は非常に直感的ではないいくつかのクラスのいくつかのメソッドをオーバーライドする代わりに、Beanを定義することを好むでしょう... 明らかに、コードを短縮して1行のコードにいくらか近づけることができればXML設定。