Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 具有文件名的Spring批处理作业参数_Java_Spring Boot_Spring Batch - Fatal编程技术网

Java 具有文件名的Spring批处理作业参数

Java 具有文件名的Spring批处理作业参数,java,spring-boot,spring-batch,Java,Spring Boot,Spring Batch,我想用SpringBatch rest控制器和动态输入文件名创建项目 我的代码:Rest控制器 @RestController 公共类FileNameController{ @Autowired JobLauncher jobLauncher; @Autowired Job job; @RequestMapping("/launchjob") public String handle(@RequestParam("fileName") String fileName) throws Exc

我想用SpringBatch rest控制器和动态输入文件名创建项目

我的代码: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
@启用批处理 公共类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();
        }
}

当我编写url时: 控制台打印:

PreparedStatementCallback;错误的SQL语法[从批处理作业实例中选择作业实例ID、作业名称,其中作业名称=?和作业密钥=?];嵌套异常为org.postgresql.util.PSQLException:错误:关系批处理作业实例不存在 职位:39


我没有请求,通常框架将创建它的表

SpringBatch不会决定在生产数据库中代表您创建表。你需要做出决定,并提前手动完成。否则,如果您使用SpringBoot,您可以通过设置Spring.batch.initializeschema=always来告诉SpringBoot为您的应用程序执行此操作


有关类似的问题/答案,请参阅。

错误消息有什么不可理解的地方?我没有请求,通常框架将创建其表。我添加了一个答案,希望能有所帮助。