当前位置: 首页 > 知识库问答 >
问题:

如何在spring batch中使用在另一个作业定义文件中声明的JobID

麻茂材
2023-03-14

我有三份工作。它们是Job1、Job2和Job3
Job1必须并行运行Job2Job3
这些作业定义文件如下所示。

job1.xml

<batch:job id="Job1" restartable="true" >
        <batch:step id="step1" next="split">
            <batch:tasklet ref="job1.stp01" />
        </batch:step>

        <batch:split id="split">
            <batch:flow>
                <batch:step id="flow1" >
                    <batch:job ref="Job2" job-launcher="simpleJobLauncher" job-parameters-extractor="defaultJobParametersExtractor"/>
                </batch:step>
            </batch:flow>

            <batch:flow>
                <batch:step id="flow2">
                    <batch:job ref="Job3" job-launcher="simpleJobLauncher" job-parameters-extractor="defaultJobParametersExtractor"/>
                </batch:step>
            </batch:flow>
        </batch:split>

    </batch:job>
<batch:job id="Job2" restartable="true">
        <batch:step id="Job2.Step01">
            <batch:tasklet ref="job2.stp01" />
        </batch:step>
    </batch:job>
<batch:job id="Job3" restartable="true">
    <batch:step id="Job3.Step01">
        <batch:tasklet ref="job3.stp01" />
    </batch:step>
</batch:job>
13:33:56,875 ERROR [org.springframework.web.context.ContextLoader] Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flow1': Cannot resolve reference to bean 'Job2' while setting bean property 'job'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'Job2' is defined

共有1个答案

卢文博
2023-03-14

尝试此配置

<import resource="classpath*:META-INF/Job2.xml" />
<import resource="classpath*:META-INF/Job3.xml" />

<batch:job id="Job1" restartable="true" >
    <batch:step id="step1" next="split">
        <batch:tasklet ref="job1.stp01" />
    </batch:step>

    <batch:split id="split">
        <batch:flow>
            <batch:step id="flow1" >
                <batch:job ref="Job2" job-launcher="simpleJobLauncher" job-parameters-extractor="defaultJobParametersExtractor"/>
            </batch:step>
        </batch:flow>

        <batch:flow>
            <batch:step id="flow2">
                <batch:job ref="Job3" job-launcher="simpleJobLauncher" job-parameters-extractor="defaultJobParametersExtractor"/>
            </batch:step>
        </batch:flow>
    </batch:split>

</batch:job>
 类似资料:
  • 问题内容: 我正在尝试编写一个基本的go程序,该程序在另一个文件上调用函数,但该文件是同一包的一部分。但是,它返回: 这是源代码: : : 问题答案: 请阅读“如何编写Go代码”。 不要在您的中使用。软件包位于中。 对于或您需要将文件放在包目录中。 对于,您需要提供所有文件作为参数: 但是,您几乎应该始终使用或或(最好是使用前者,因为使用非主软件包时会引起混乱)

  • 用例:步骤1:ItemReader:从数据库中读取1000个ItemProcessor块中的数据:处理这些数据。ItemWriter:将数据写入地图,以便下一步使用 步骤2:ItemReader:读取地图ItemProcessor:处理地图数据并获取新对象。ItemWriter:将新的进程对象持久化到数据库中。 现在我希望Map在整个作业中保持不变,目前我已经为Map创建了一个不同的POJO类,并

  • 在阅读了许多文章之后,我被困在这个非常简单的任务上。 我有一个只有两个文件的沙盒项目: src/main/groovy/classes/foo 和src/main/groovy/脚本/script.groovy 现在,如果我运行命令: 我得到以下错误: 如何在我的脚本script.groovy中使用我的类Foo?

  • 我正在使用maven项目进行UI自动化,我需要在多个环境和多个浏览器中运行一些测试。我已经创建并添加了pom.xml文件,并声明了其中的属性。但是当我通过终端执行它时,我得到了错误。我用的命令- 错误-[信息]扫描项目...[ERROR][ERROR]处理POM时遇到一些问题:[FATAL]不可解析POM d:\work\cucumber_projects\ui-automation-projec

  • 问题内容: 我是PHP的新手,我使用Eclipse SDE构建一个简单的Web应用程序。 我的方案是: 我有 index.php 页面,其中包括登录表单( 2个文本框和Login Button ) 我有包含两个表的MySQL数据库:system_users和user_errors 每当用户成功在index.php页面中登录时,这都应将其重定向到 page1.php ,然后从user_errors表

  • 问题内容: 我将Linux用作编程平台,将C语言用作编程语言。 我的问题是,我在主源文件(main.c)中定义了一个结构: 所以我希望这个结构可以在我的其他源文件(例如othersrc。)中使用。是否可以在另一个源文件中使用此结构而不将其放在标头中? 问题答案: 您可以使用指向它的指针,而不必包括它: othersrc.c: 但是否则,您需要以某种方式包括结构定义。一个好的方法是在main.h中定