Я пытаюсь обработать серию файлов с помощью Spring Integration в пакетном режиме. У меня есть очень старый xml, который пытается преобразовать сообщения в задания.
<int:transformer ref="messageToJobTransformer"/>
<batch-int:job-launching-gateway job-launcher="jobLauncher"/>
messageToJobTransformer
— это класс, который может преобразовать сообщение в задание. Проблема в том, что я не знаю, где сейчас находится этот файл, и мне не нужна конфигурация xml. Я хочу, чтобы это был чистый Java DSL. Вот мой простой конфиг.
return IntegrationFlows.from(Files.inboundAdapter(directory)
.preventDuplicates()
.patternFilter("*.txt")))
.handle(jobLaunchingGw())
.get();
А вот и мой бин для шлюза.
@Autowired
private JobLauncher jobLauncher;
@Bean
public MessageHandler jobLaunchingGw() {
return new JobLaunchingGateway(jobLauncher);
}
РЕДАКТИРОВАТЬ: Обновление класса Batch Config.
@Configuration
@EnableBatchProcessing
public class BatchConfig
{
@Autowired
private JobBuilderFactory jobs;
@Autowired
private StepBuilderFactory steps;
@Bean
public ItemReader<String> reader(@Value({jobParameters['input.file.name']}") String filename) throws MalformedURLException
{
FlatFileItemReader<String> reader = new FlatFileItemReader<String>();
return reader;
}
@Bean
public Job job() throws MalformedURLException
{
return jobs.get("job").start(step()).build();
}
@Bean
public Step step() throws MalformedURLException
{
return steps.get("step").<String, String> chunk(5).reader(reader())
.writer(writer()).build();
}
@Bean
public ItemWriter<String> writer(@Value("#{jobParameters['input.file.name']}")
{
FlatFileItemWriter writer = new FlatFileItemWriter();
return writer;
}
}