Springバッチアプリケーションを作成しようとしています。 SQL Anywhereデータベースを使用します。これは、既知のデータベースタイプであるSQLSERVER
です。私のメインクラスでは@SpringBootApplication
、構成クラスでは@EnableBatchProcessing
を使用しています。 は、製品名「SQL Anywhere」を返しますが、これはSpringによって認識されず、さまざまなエラーが発生します。私は明示的に私の構成クラスでJobRepositoryFactoryBeanを作成することにより、それらのいくつかを乗り越えることができた:それは明示的に独自のJobExplorerFactoryBeanを構築するため自動構成と非標準データベースでSpringバッチを使用する
/**
* We can't rely on Spring Boot as it can't set the database type properly.
*
* By explicitly requiring the arguments in the constructor, we force the Autowiring
* to occur.
*/
@Bean
public JobRepositoryFactoryBean jobRepositoryFactory(DataSource ds, PlatformTransactionManager tm) {
JobRepositoryFactoryBean jf = new JobRepositoryFactoryBean();
jf.setDataSource(ds);
jf.setTransactionManager(tm);
jf.setDatabaseType("SQLSERVER");
jf.setTablePrefix("DBA.BATCH_");
jf.setIsolationLevelForCreate("ISOLATION_SERIALIZABLE"); // only one instance at a time
return jf;
}
しかし、DefaultBatchConfigurer
は、intialize機能に障害が発生しました。
これは単純な方法か、DefaultBatchConfigurer
クラスの作業を複製し、すべてのBeanを自分で定義して、@EnableBatchProcessing
注釈を削除する必要があるのだろうかと思います。