2016-05-25 9 views
4

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設定。

答えて

3

は単にあなた一括設定に登録されたあなたのプロパティファイルのいずれかに次の行を追加します。

spring.batch.table-prefix= GFA.BATCH_ 

FYI、接頭spring.batch春ブーツを提供org.springframework.boot.autoconfigure.batch.BatchPropertiesにマッピングされています。ソースコードon githubを参照してください。

関連する問題