Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot Spring引导(Spring批处理)配置禁用数据库的自动创建_Spring Boot_Spring Batch - Fatal编程技术网

Spring boot Spring引导(Spring批处理)配置禁用数据库的自动创建

Spring boot Spring引导(Spring批处理)配置禁用数据库的自动创建,spring-boot,spring-batch,Spring Boot,Spring Batch,我将Spring boot与Spring Batch一起使用,我的application.properties中有datasource配置,但我不希望Spring Batch在我的数据库中创建表,因此我使用以下配置 @Configuration @EnableBatchProcessing public class BatchConfiguration { @Autowired public JobBuilderFactory jobBuilderFactory; @Autowired pu

我将Spring boot与Spring Batch一起使用,我的application.properties中有datasource配置,但我不希望Spring Batch在我的数据库中创建表,因此我使用以下配置

@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
来禁用数据库表的自动创建

在应用程序的第一次运行期间,一切正常,但当我尝试完成我的工作时,我得到了MySQLSyntaxErrorException:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:表 “批处理作业实例”不存在


仅仅因为您已经禁用了表的自动生成,您仍然需要某种方法使这些实体可用。springbatch有两种机制。您可以手动或通过模式管理器(如Liquibase)创建这些数据库表。为此,请使用spring批处理核心资源中的SQL文件。否则,可以使用这些表的内存表示形式