如何仅使用java配置在spring-xd中创建作业

时间:2014-03-06 20:42:17

标签: spring-xd

是否有使用spring xd和纯java配置(无xml)的示例。 我创建了一个简单的tasklet,同样(whojob.jar)将它放入lib文件夹中。 xml配置如下。我将它放在一个名为whojob的文件中,该文件位于modules / job文件夹中,并且还使用了我的whojob.jar。 当我尝试创建一个工作时: - (:> job create --name mywhojob --definition“whojob”)我收到错误: 引起:org.springframework.beans.factory.BeanCreationException:创建名为'org.springframework.integration.config.TransformerFactoryBean#0'的bean时出错:无法创建内部bean'org.springframework.xd.dirt.plugins.job.JobLaunchRequestTransformer设置bean属性'targetObject'时,类型为[org.springframework.xd.dirt.plugins.job.JobLaunchRequestTransformer]的#0';嵌套异常是org.springframework.beans.factory.BeanCreationException:在类路径资源[META-INF / spring-xd / plugins中定义的名称'org.springframework.xd.dirt.plugins.job.JobLaunchRequestTransformer#0'创建bean时出错/job/job-module-beans.xml]:设置构造函数参数时无法解析对bean'workFactoryBean'的引用;嵌套异常是org.springframework.beans.factory.BeanCreationException:创建名为'jobFactoryBean'的bean时出错:FactoryBean在创建对象时抛出异常;嵌套异常是java.lang.IllegalStateException:在注册表中找不到提供的密钥'mywhojob.job'的批处理作业。  我的xml配置如下。如果可能的话,我希望有一个纯java解决方案。 感谢

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:int="http://www.springframework.org/schema/integration"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
    xmlns:batch="http://www.springframework.org/schema/batch"
xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/integration
    http://www.springframework.org/schema/integration/spring-integration.xsd
    http://www.springframework.org/schema/batch
    http://www.springframework.org/schema/batch/spring-batch.xsd">

<batch:job id="whojob">
    <batch:step id="whojobStep">
        <batch:tasklet ref="whojobXDTasklet" />
    </batch:step>
</batch:job>

<bean id="whojobXDTasklet"
    class=" com.auction.data.batch.job.WhoTasklet" >
    <property name= "who" ref="whoBean"/> 
</bean>

<bean id="whoBean"
    class="com.auction.data.batch.service.Who" >

</bean>

    </beans>

1 个答案:

答案 0 :(得分:1)

以下是使用XD作业和外部jar文件中定义的批处理tasklet的示例。

https://github.com/ilayaperumalg/spring-xd-batch-sample

要创建jar,请从repo根目录运行:./ gradlew build

为了方便起见,我还复制了工作模块&#34; myjob&#34; (使用上面的tasklet)进入repo。你可以复制这个&#39; myjob&#39;进入$ XD_HOME / modules / job /.

尝试使用XD版本M6或最新版主,如果您有任何疑问,请告诉我们。