【问题标题】:Can we set reader, writer, processor types at runtime in spring batch我们可以在 Spring Batch 中在运行时设置读取器、写入器、处理器类型吗
【发布时间】:2016-01-18 15:57:30
【问题描述】:

我正在使用 jsonschema2pojo-maven-plugin v0.4.7 在运行时从 JSON 模式生成 POJO 类。我希望我的阅读器应该是动态生成的 pojo 类的类型。 例如,Employee.java 的模式将在运行时转换为 pojo 类作为 Employee.java 这个 pojo 名称我想将我的阅读器的类型设置为 ItemReader。 有没有什么方法可以在spring batch运行时设置reader writer的类型?

提前致谢。

【问题讨论】:

    标签: java spring maven


    【解决方案1】:

    没有。如果您真的在运行时生成了这些类,那么在编译时就无法引用它们(使用ItemReader<Employee>),因为它们不存在。

    但是,我怀疑您是否需要在运行时生成类。也许您可以向我们展示更多代码,以便我们可以看到您在做什么。但到目前为止,答案是否定的。

    【讨论】:

      【解决方案2】:

      @Thomas:谢谢你的回答。从模式中,我知道将在运行时生成的 pojo 的类名。唯一的问题是我不知道如何在运行时将该名称设置为 pojo 类的类型。 我想要做的是从模式中读取字段,然后从该字段创建 mongodb 查询并从 mongodb 获取数据将其写入文件。所以在这种情况下,出于映射目的,我需要 pojo 类,通过它我可以根据模式编写数据。我有一个根据 mongo db 数据的 pojo 类。但我只想写那些在模式中指定的字段。所以我去根据架构生成运行时 pojo 类。现在我可以生成它了。我在创建之前知道该名称。我只想将该类设置为一种阅读器类型,如 ItemReader
      下面是我的代码。

          JobParametersBuilder paramBuilder = new JobParametersBuilder();
          readSchema.readSchema(new File("c:/chaitanya/employeeSchema3.json"));
          readSchema.printFields();
          String keys=readSchema.getQuery();
          String mainClass=readSchema.getSchemaName();
          schemaToPojo.createPojo(file,mainClass,package);
          paramBuilder.addString("b", keys);
          paramBuilder.addString("query", "{}");
          Job job = jobRegistry.getJob("mongoToJsonJobBatch");
          JobExecution execution;
          execution=jobLauncher.run(job,paramBuilder.toJobParameters());
      

      在 create pojo 中,我传递了三个参数 i.schema 文件 ii. 将在运行时生成的类名enter code here iii.package name.pojo 类的创建位置

      【讨论】:

        猜你喜欢
        • 2018-03-23
        • 2018-02-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-30
        • 1970-01-01
        • 2017-01-08
        • 2018-06-23
        相关资源
        最近更新 更多