Пакетное задание Spring запускается автоматически при запуске приложения. Как избежать идентификатора? - PullRequest
0 голосов
/ 20 февраля 2020

Я делаю простой проект в Spring, чтобы понять, как работает Spring batch. Мой проект работает, но работа выполняется при запуске приложения, и я не хочу этого. Есть способ избежать этого?

Я уже могу запустить задачу, когда захочу (например, go для определенного URL-адреса, сопоставленного с @RestController). Единственная проблема заключается в том, что пакетное задание запускается и при запуске приложения.

Однако мой код конфигурации для пакета Spring:

@Configuration
@EnableBatchProcessing
public class BatchConfiguration {
    @Autowired
    public JobBuilderFactory jobBuilderFactory;

    @Autowired
    public StepBuilderFactory stepBuilderFactory;

    @Bean
    public FlatFileItemReader<Person> reader() {
      return new FlatFileItemReaderBuilder<Person>()
        .name("personItemReader")
        .resource(new ClassPathResource("sample-data.csv"))
        .delimited()
        .names(new String[]{"firstName", "lastName"})
        .fieldSetMapper(new BeanWrapperFieldSetMapper<Person>() {{
          setTargetType(Person.class);
        }})
        .build();
    }

    @Bean
    public PersonItemProcessor processor() {
      return new PersonItemProcessor();
    }

    @Bean
    public JdbcBatchItemWriter<Person> writer(DataSource dataSource) {
      return new JdbcBatchItemWriterBuilder<Person>()
        .itemSqlParameterSourceProvider(new BeanPropertyItemSqlParameterSourceProvider<>())
        .sql("INSERT INTO people (first_name, last_name) VALUES (:firstName, :lastName)")
        .dataSource(dataSource)
        .build();
    }

    @Bean
    public Job importUserJob(JobCompletionNotificationListener listener, Step step1) {
      return jobBuilderFactory.get("importUserJob")
        .incrementer(new RunIdIncrementer())
        .listener(listener)
        .start(step1)
//      .flow(step1)
//      .end()
        .build();
    }

    @Bean
    public Step step1(JdbcBatchItemWriter<Person> writer) {
      return stepBuilderFactory.get("step1")
        .<Person, Person> chunk(10)
        .reader(reader())
        .processor(processor())
        .writer(writer)
        .build();
    }
}

У меня для этого есть репозиторий github publi c Проект: https://github.com/Mazzotta13/SpringBatch.git

Заранее спасибо.

1 Ответ

2 голосов
/ 20 февраля 2020

В вашем application.properties добавить это

spring.batch.job.enabled=false

Надеюсь, полезно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...