2016-09-08 5 views
2

스프링 - 배치와 함께 스프링 부트를 사용하고 있습니다. 내 application.properties에 데이터 소스 구성이 있지만 스프링 배치로 테이블을 만들지는 않습니다. 그것을 위해 내가스프링 부트 (스프링 배치) 구성은 데이터베이스의 자동 생성을 비활성화합니다.

@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

존재하지 않는, 당신은 여전히 ​​몇 가지 방식이 필요 이 엔티티를 사용할 수있게하십시오. 스프링 배치에는 두 가지 메커니즘이 있습니다. 이러한 데이터베이스 테이블을 수동으로 만들거나 Liquibase와 같은 스키마 관리자를 통해 만들 수 있습니다. 이를 수행하려면 스프링 배치 코어 자원 https://github.com/spring-projects/spring-batch/tree/4.0.0.RELEASE/spring-batch-core/src/main/resources에있는 SQL 파일을 사용하십시오. 그렇지 않으면 이러한 테이블의 메모리 내 표현을 사용할 수 있습니다.

관련 문제