"无法反序列化执行上下文"使用StepBuilder创建tasklet时

时间:2017-05-17 08:44:04

标签: java spring spring-batch

我最近开始使用Spring批处理(对Java来说很新),现在我正在尝试创建一个在数据库中创建表的tasklet。

    @EnableBatchProcessing
    @SpringBootApplication
    public class Configure {

        public static void main(String[] args)
        {
            SpringApplication.run(Configure.class, args);
        }    
    @Bean
        public Job AggregateTransactionsFromDatabaseToXML(JobBuilderFactory jobBuilderFactory,
                                                          StepBuilderFactory stepBuilderFactory,
                                                          Tasklets tasklets){return jobBuilderFactory.get("etl")
                                    .incrementer(new RunIdIncrementer())
                                    .start(tasklets.createTempTable(null, null))
                                    .build();}

        @Configuration
        static class Tasklets{
            @Bean
            Step createTempTable(DataSource dataSource, StepBuilderFactory stepBuilderFactory) {
                StepBuilder createTempTable = stepBuilderFactory.get("create temp table");
                String sql = "CREATE TABLE DatabaseName.TableName\n" +
                        "(\n" +
                        "    column1 VARCHAR(255) NOT NULL,\n" +
                        "    column2 DATE NOT NULL,\n" +
                        "    column3 DECIMAL NOT NULL,\n" +
                        "    column4 BIGINT NOT NULL,\n" +
                        "    column5 BIGINT NOT NULL\n" +
                        ")";
                return createTempTable.tasklet((contribution, chunkContext) -> {
                    new JdbcTemplate(dataSource).execute(sql);
                    return RepeatStatus.FINISHED;
                })
                                      .allowStartIfComplete(true)
                                      .build();
            }
}
}

我收到错误:Caused by: java.lang.IllegalArgumentException: Unable to deserialize the execution context.

我不知道这是怎么回事。

我在网上查看了StepBuilder的示例,但找不到任何有用的任务。 TaskletStepBuilder exampleReader en Writer example

我使用StepBuilder错了吗?任何人都知道如何解决这个问题?

问题已经解决:我没有配置spring应用程序上下文。这显然很重要。

1 个答案:

答案 0 :(得分:0)

问题已经解决:我没有配置spring应用程序上下文。这显然很重要。

我还将tasklets.createTempTable(null,null)更改为tasklets.createTempTable(null,stepBuilderFactory)。