作业前测试文件名
test file name before job
我正在尝试使用 spring 批处理将数据从 csv 文件导入数据库,我正在尝试做的是测试目录是否为空和文件名 - 它必须在作业之前匹配特定模式如果匹配则启动它应该启动作业并读取文件如果不匹配则将其移至被拒绝的 folder.The 问题是我在哪里进行测试部分我尝试将其放在 ItemReader
之前
@Bean
public FlatFileItemReader<SMS> reader(){
try {
//here//
}
} catch (IOException e) {
e.printStackTrace();
}
FlatFileItemReader<SMS> CSVReader=new FlatFileItemReader<SMS>();
CSVReader.setLinesToSkip(1);
CSVReader.setName("SMSItemReader");
CSVReader.setResource(new ClassPathResource(fileInput+""));
CSVReader.setLineMapper(lineMapper());
return CSVReader;
}
但是没有用,也不能把它放在步骤中,因为无论如何它都应该 return 一个步骤,我迷路了,有人能帮我吗,拜托
您不应该在 bean 定义方法中编写此类代码。此方法旨在定义一个 item reader bean。您尝试做的事情适合 JobExecutionDecider
(这是许多其他选项中的一个)。作业执行决策器是您可以放置逻辑来决定您的作业是否应该执行的地方,例如检查您的案例中的目录内容和文件名模式。
您可以在文档的 Programmatic Flow Decisions 部分找到更多详细信息和代码示例。
我正在尝试使用 spring 批处理将数据从 csv 文件导入数据库,我正在尝试做的是测试目录是否为空和文件名 - 它必须在作业之前匹配特定模式如果匹配则启动它应该启动作业并读取文件如果不匹配则将其移至被拒绝的 folder.The 问题是我在哪里进行测试部分我尝试将其放在 ItemReader
之前 @Bean
public FlatFileItemReader<SMS> reader(){
try {
//here//
}
} catch (IOException e) {
e.printStackTrace();
}
FlatFileItemReader<SMS> CSVReader=new FlatFileItemReader<SMS>();
CSVReader.setLinesToSkip(1);
CSVReader.setName("SMSItemReader");
CSVReader.setResource(new ClassPathResource(fileInput+""));
CSVReader.setLineMapper(lineMapper());
return CSVReader;
}
但是没有用,也不能把它放在步骤中,因为无论如何它都应该 return 一个步骤,我迷路了,有人能帮我吗,拜托
您不应该在 bean 定义方法中编写此类代码。此方法旨在定义一个 item reader bean。您尝试做的事情适合 JobExecutionDecider
(这是许多其他选项中的一个)。作业执行决策器是您可以放置逻辑来决定您的作业是否应该执行的地方,例如检查您的案例中的目录内容和文件名模式。
您可以在文档的 Programmatic Flow Decisions 部分找到更多详细信息和代码示例。