Я работаю над миграцией Spring Batch 5. Я использую Jave 17 и Spring Boot 3. У меня не возникло проблем ни с шагом, ни с работой. Однако весной пакет 5 DefaultBatchConfigurer удаляется. настройка источника данных другая. Я пытался использовать руководство по миграции Spring Batch 5, но получаю ReadedStatementCallback; неверная грамматика SQL [INSERT INTO BATCH_JOB_EXECUTION_PARAMS(JOB_EXECUTION_ID, PARAMETER_NAME,... ошибка.
мой файл Batchconf:
@Configuration @AutoConfigureAfter(JobRepo.class) @EnableBatchProcessing(dataSourceRef = "batchDataSource",transactionManagerRef = "batchTransactionManager") общественный класс BatchConfiguration { @Autowired @Qualifier("Пакетная конфигурация") Источник данныхИсточник данных; @Бин общедоступный источник данных packageDataSource() { вернуть источник данных; } @Бин public JdbcTransactionManageratchTransactionManager(DataSource dataSource) { вернуть новый JdbcTransactionManager(dataSource); } public static void main(String e []) выдает исключение { JobParameters jobParameters = новый JobParametersBuilder().addLong("время", System.currentTimeMillis()).toJobParameters(); Контекст ApplicationContext = новый AnnotationConfigApplicationContext(LoadController.class); JobLauncher jobLauncher = context.getBean(JobLauncher.class); JobExecution jobExecution = jobLauncher.run(context.getBean(Job.class), jobParameters); System.out.println("Состояние завершения задания: " + jobExecution.getStatus()); } @Бин общедоступный шаг шага (JobRepository jobRepository, JdbcTransactionManagertransactionManager) { вернуть новый StepBuilder("шаг", jobRepository) .chunk(5,transactionManager) .reader(itemReader()) .writer(itemWriter()) .processor(новый CSVItemProcessor()) .строить(); } @Бин public Job job (JobRepository jobRepository, JdbcTransactionManager transactionManager) { вернуть новый JobBuilder("работа") .start(шаг(jobRepository,transactionManager)) .строить(); } @Бин public FlatFileItemWriter itemWriter() { вернуть новый FlatFileItemWriterBuilder() .resource(новый FileSystemResource("persons.csv")) .name("personItemWriter") .delimited() .names("id", "имя") .строить(); } } Вот как я использовал источник данных перед весенней миграцией пакета 5
@EnableBatchProcessing @Конфигурация @AutoConfigureAfter(JobRepo.class) общественный класс BatchConfiguration { @Бин public DefaultBatchConfiguration dataSource(@Qualifier("BatchConfig") DataSource dataSource) { вернуть новый DefaultBatchConfigurer(dataSource); } //шаг //работа ... } Класс JobRepo — это место, где я загружаю базу данных USERNAME, PASSWORD....
@Configuration @ConfigurationProperties(prefix="spring.datasource") публичный класс JobRepo расширяет HikariConfig{ @Bean("Пакетная конфигурация") public DataSource dataSource() выдает SQLException { вернуть новый HikariDataSource(this); } } это мой урок по обеду
@Configuration общественный класс BatchUtil { @Autowired @Qualifier("Пакетная конфигурация") Источник данныхИсточник данных; частный JobRepository getJobRep() выдает исключение { Фабрика JobRepositoryFactoryBean = новый JobRepositoryFactoryBean(); Factory.setDataSource(источник данных); Factory.setTransactionManager(новый ResourcelessTransactionManager()); фабрика.afterPropertiesSet(); return (JobRepository) Factory.getObject(); } @Bean("JobLauncher") public SimpleJobLauncher simpleJobLauncher () выдает исключение { SimpleJobLauncher jobLauncher = новый SimpleJobLauncher (); jobLauncher.setJobRepository(getJobRep()); jobLauncher.setTaskExecutor(asyncTaskExecutor()); вернуть заданиеLauncher; } } Приложение.свойство
spring.datasource.url=jdbc:oracle:thin:@localhost