如何使用具有Java配置的CommandLineJobRunner启动Spring批处理作业

o0lyfsai  于 2023-03-11  发布在  Java
关注(0)|答案(2)|浏览(182)

我的批处理作业定义在基于Java的配置文件中。我已经看到CommandLineJobRunner可用于启动作业,但作业定义应在. xml中定义。我想使用CommandLineJobRunner运行在基于Java的配置中定义的作业。
根据这里的文档:https://docs.spring.io/spring-batch/trunk/reference/html/configureJob.html#commandLineJobRunner,没有执行此操作的详细信息。
我们真的能做到吗?还有其他选择吗?

ia2d9nvy

ia2d9nvy1#

CommandLineJobRunner的第一个参数可以是:

  • 包含作业定义的xml文件
  • 或包含作业定义的配置类的完全限定名

从Spring Batch v4开始,每个文档页面的顶部都有一个切换,允许您在Java或Xml配置中显示示例。例如,当切换设置为“Java”时,文档部分在这里:https://docs.spring.io/spring-batch/4.0.x/reference/html/job.html#runningJobsFromCommandLine显示了如何将CommandLineJobRunner与Java配置类一起使用:

$>java -cp your/class/path org.springframework.batch.core.launch.support.CommandLineJobRunner io.spring.EndOfDayJobConfiguration endOfDay schedule.date(date)=2007/05/05

io.spring.EndOfDayJobConfiguration是包含endOfDay作业定义的完全限定类名。

yftpprvb

yftpprvb2#

cd到您的项目,使用获取所有依赖项

mvn dependency:copy-dependencies

在maven项目的pom.xml build-〉plugins部分添加以下内容

<plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <mainClass>org.springframework.batch.core.launch.support.CommandLineJobRunner</mainClass>
            </configuration>   
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
              <archive>
                <manifest>
                  <addClasspath>true</addClasspath>
                  <mainClass>org.springframework.batch.core.launch.support.CommandLineJobRunner</mainClass>
                </manifest>
              </archive>
            </configuration>
      </plugin>

使用您的构建方法创建项目jar并从命令行运行。

java -cp dependency/* -jar your.jar com.abc.BatchConfigurationA JobA -- parm1=valA,java.lang.String,false parm2=22,java.lang.Long,false

相关问题