2016-09-08 14 views
2

私はSpring-BatchでSpringブートを使用しています。私はapplication.propertiesにdatasource configを持っていますが、そのために私はSpringブート(春のバッチ)の設定データベースの自動作成を無効にする

@Configuration 
@EnableBatchProcessing 
public class BatchConfiguration { 

@Autowired 
public JobBuilderFactory jobBuilderFactory; 

@Autowired 
public StepBuilderFactory stepBuilderFactory; 

@Bean 
public Job myJob() { 
    return jobBuilderFactory.get("myJob").incrementer(new RunIdIncrementer()) 
      .listener(listener()).flow(step2()).end().build(); 
} 

@Bean 
public JobRegistryBeanPostProcessor jobRegistryBeanPostProcessor(final JobRegistry jobRegistry) { 
    JobRegistryBeanPostProcessor jobRegistryBeanPostProcessor = new JobRegistryBeanPostProcessor(); 
    jobRegistryBeanPostProcessor.setJobRegistry(jobRegistry); 
    return jobRegistryBeanPostProcessor; 
} 

@Bean 
public Step step2() { 
    LOGGER.info("step2"); 
    return stepBuilderFactory.get("step2").tasklet(new PurchaseStatusBatch()).build(); 
} 

@Bean 
public JobOperator jobOperator() throws Exception { 
    SimpleJobOperator jobOperator = new SimpleJobOperator(); 
    jobOperator.setJobExplorer(jobExplorer()); 
    jobOperator.setJobLauncher(jobLauncher()); 
    jobOperator.setJobRegistry(jobRegistry()); 
    jobOperator.setJobRepository(getJobRepo()); 
    return jobOperator; 
} 

@Bean 
public JobRegistry jobRegistry() { 
    return new MapJobRegistry(); 
} 

@Bean 
public JobExplorer jobExplorer() throws Exception { 

    MapJobExplorerFactoryBean factoryExplorer = new MapJobExplorerFactoryBean(
      new MapJobRepositoryFactoryBean(getTransactionManager())); 
    factoryExplorer.afterPropertiesSet(); 
    return factoryExplorer.getObject(); 
} 

@Bean 
public JobLauncher jobLauncher() throws Exception { 
    SimpleJobLauncher jobLauncher = new SimpleJobLauncher(); 
    jobLauncher.setJobRepository(getJobRepo()); 
    jobLauncher.afterPropertiesSet(); 
    return jobLauncher; 
} 

@Bean 
public PlatformTransactionManager getTransactionManager() { 
    return new ResourcelessTransactionManager(); 
} 

@Bean 
public JobRepository getJobRepo() throws Exception { 
    return new MapJobRepositoryFactoryBean(getTransactionManager()).getObject(); 
} 
} 

は、私がアプリケーションの最初の実行中にデータベーステーブル

の自動作成を無効にするspring.batch.initializer.enabled=falseを使用し、次の設定を使用するので、私のデータベースは、すべてが正常に動作しますが、私はlanchしようとすると、私の仕事私はMySQLSyntaxErrorExceptionを取得:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:表 「BATCH_JOB_INSTANCE」は

答えて

0

存在しませんが、テーブルの自動生成を無効にしているからといって、あなたはまだにいくつかの方法が必要ですこれらのエンティティを利用可能にする。 Spring Batchには2つのメカニズムがあります。これらのデータベーステーブルは、手動で作成することも、Liquibaseなどのスキーママネージャを使用して作成することもできます。そのためには、スプリングバッチコアリソースhttps://github.com/spring-projects/spring-batch/tree/4.0.0.RELEASE/spring-batch-core/src/main/resourcesにあるSQLファイルを使用します。それ以外の場合は、これらの表のメモリー内表現を使用できます。

関連する問題