3

必須およびオプションのパラメーターについて言及したジョブパラメーターバリデーターがあります。バッチを実行すると、正しく実行されます。

@Bean
    public JobParametersValidator validator() {

    String[] compulsoryParameters; //here I've created my compulsory parameters
    String[] optionalParams ; //here I've created my optional parameters

    return new DefaultJobParametersValidator(compulsoryParameters, optionalParams);
}

ここで、必須パラメーターから項目を削除し、再度実行するとします。それでも同じパラメーターを渡すように求められます。

Caused by: org.springframework.batch.core.JobParametersInvalidException: The JobParameters contains keys that are not explicitly optional or required: [incrementerId]
        at org.springframework.batch.core.job.DefaultJobParametersValidator.validate(DefaultJobParametersValidator.java:107)
        at org.springframework.batch.core.launch.support.SimpleJobLauncher.run(SimpleJobLauncher.java:126)

バッチ構成

必須/オプションのパラメーターは、application.properties で構成されます

mybatch.batch.compulsoryParameters=名前

mybatch.batch.optionalParameters=入力番号

@Configuration
@EnableTransactionManagement
@EntityScan(basePackages = "com.something.*")
@EnableJpaRepositories(basePackages = "com.something.*")
@EnableBatchProcessing
@EnableCaching
@EnableConfigurationProperties
@Getter
@Setter
@ConfigurationProperties(prefix = "mybatch.batch", ignoreUnknownFields = false)
public class BatchConfig {

    /**
     * Configuration settings for the validator
     */
    private String[] compulsoryParameters;
    private String[] optionalParameters;

    /**
     * Default validator for Spring Batch
     *
     * @return
     */
    @Bean
    public JobParametersValidator validator() {

        List<String> tempList = new ArrayList<>();
        if (optionalParameters != null) {
            Collections.addAll(tempList, optionalParameters);
        }

        // Adding the run.id parameter for enabling the rerun batches
        tempList.add("run.id");
        String[] optionalParams = new String[tempList.size()];
        optionalParams = tempList.toArray(optionalParams);

        return new DefaultJobParametersValidator(compulsoryParameters, optionalParams);
    }


}

: すべてのジョブの詳細はデータベースに保持されます。

4

1 に答える 1