我想创建带有Spring批处理Rest控制器和动态输入html" target="_blank">文件名的项目。
我的代码:Rest控制器
@RestController
公共类FileNameController{
@Autowired
JobLauncher jobLauncher;
@Autowired
Job job;
@RequestMapping("/launchjob")
public String handle(@RequestParam("fileName") String fileName) throws Exception {
Logger logger = LoggerFactory.getLogger(this.getClass());
try {
JobParameters jobParameters = new JobParametersBuilder()
.addString("input.file.name", fileName)
.addLong("time", System.currentTimeMillis())
.toJobParameters();
jobLauncher.run(job, jobParameters);
} catch (Exception e) {
logger.info(e.getMessage());
}
return "Done";
}
}
作业配置:
@Configuration
@EnableBatchProcessing公共类JobConfig{
@Autowired
public JobBuilderFactory jobBuilderFactory;
@Autowired
public StepBuilderFactory stepBuilderFactory;
Filetasklet ft=new Filetasklet();
Logger log = LoggerFactory.getLogger(this.getClass().getName());
private String pathFile = urlCoffreFort + "\\" + ft.getFileName();
// => Configuration of Job
@Bean
public Job job() throws IOException {
return jobBuilderFactory.get("job")
.incrementer(new RunIdIncrementer())
.flow(step1())
.end()
.build();
}
//###### Steps
// => Step cecStep1
@Bean
public Step step1() throws IOException {
return stepBuilderFactory.get("fileDecrypt")
.<Person, String>chunk(100)
.reader(reader1())
.processor(processor1FileDecrypt())
.writer(writer1())
.faultTolerant()
.skip(Exception.class)
.skipLimit(100)
.build();
}
// ####### readers
// => reader1()
@Bean
public FlatFileItemReader<Person> reader1() throws IOException{
return new FlatFileItemReaderBuilder<CSCivique>().name("personItemReader")
.resource(new ClassPathResource(pathFile))
.delimited()
.delimiter(";")
.names(new String[] { "id", "nomNaissance", "prenom" })
.targetType(CSCivique.class)
.build();
}
// ######Processors
@Bean
public PersonItemProcessor1FileDecrypt processor1FileDecrypt() {
return new PersonItemProcessor1FileDecrypt();
}
// ######Writers
@Bean
public FlatFileItemWriter<String> writer1() {
return new FlatFileItemWriterBuilder<String>().name("greetingItemWriter")
.resource(new FileSystemResource("sav/greetings.csv"))
.lineAggregator(new PassThroughLineAggregator<>()).build();
}
}
我写网址的时候:http://localhost:8080/launch job?fileName=djecc5cpt.csv控制台打印:
SQL语法[SELECTJOB_INSTANCE_ID,JOB_NAMEBATCH_JOB_INSTANCEJOB_NAME=?JOB_KEY =?]; 嵌套异常org.postgresql.util.PSQLException: ERROR:关系batch_job_instance不存在
我没有请求,通常框架会创建它的表
Spring Batch不会决定在生产数据库中为您创建表。您需要提前手动做出决定。否则,如果您使用Spring Boot,您可以通过设置< code > spring . batch . initialize-schema = always 告诉Spring Boot为您这样做。
请参阅https://stackoverflow.com/a/51891852/5019386类似的问题/答案。
我知道匹配模式解析器,这是Spring批处理提供的。我需要关于如何构造批处理作业的帮助,以便它可以读取循环中的记录类型5和记录类型6。
我有一个包含多个json文件的zip文件。我已解压缩它们,然后使用以下代码从json获取POJO对象: 但我需要使用spring批处理逐个处理这些json文件。有人能帮助我如何在spring批处理中实现这一点吗?我想使用1000块来读取json文件。我的json对象非常复杂。例子:
总之,我有一个要求,在使用Spring批处理时,我确实生成了最终结果文件。生成文件后,我需要使用SFTP将它们传输到另一个服务器。现在我把它们看成是两个独立的程序。有没有办法让我把这两个结合起来?我想知道我是否可以使用Spring批处理生成文件,然后立即将文件传输到生成文件的同一程序中的另一个服务器。 我是一个新的Spring批次,所以寻找可能的方法。 不确定为什么会出现连接超时错误。 XML配置
需要读取spring批处理中的文件,对其进行处理并将其作为一个提要保存。一个提要包含50%的信息。当我必须持久化提要的最终结果时,我需要使用公共字段将它们组合起来,并像一个项目一样持久化。请参见下面的示例。 我需要保留的最终信息如下: 请建议我如何在我的Spring批工作中实现这一点。 谢谢
我编写了一个用于简单查询的spring批处理应用程序。这对于第一次使用某些作业Id很好,但是对于下一次执行,它需要新的作业Id。为此编写了jobParamIncrementer类,仍然得到bean defn未找到异常。我不太明白发生了什么。请帮帮我。 下面是堆栈跟踪。 乔布伦纳(主班)
主要内容:创建批处理文件,保存批处理文件,执行批处理文件,修改批处理文件在本章中,我们将学习如何创建,保存,执行和修改批处理文件。 创建批处理文件 批处理文件通常在记事本中创建。 因此,最简单的方法是打开记事本并输入脚本所需的命令。 对于这个练习,打开记事本并输入以下语句。 保存批处理文件 在创建批处理文件后,下一步是保存批处理文件。 批处理文件的扩展名为或。 命名批处理文件时需要注意的一些常规规则 - 在命名批处理文件时避免使用空格,有时会在从其他脚本中调用时产生问