如何使用ModuleConfiguration.java配置Spring XD模块?

时间:2016-01-04 09:32:27

标签: java spring spring-xd

我已经创建了一个Spring XD模块,与示例tweet转换器相似。 Spring文档说您可以使用spring-module.properties下的spring-module.xmlsrc/main/resources/config/配置,也可以使用定义Bean的专用ModuleConfiguration.java文件。但是,如果我只使用后者,它就不会运行。 XD抱怨它无法确定模块类型。

如果我添加spring-modules.properties和模块xml,它可以正常工作。我的ModuleConfiguration.java看起来像这样:

package mypackage;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.integration.channel.DirectChannel;
import org.springframework.integration.config.EnableIntegration;
import org.springframework.messaging.MessageChannel;

@Configuration
@EnableIntegration
public class ModuleConfiguration {
    @Bean
    MessageChannel input() {
        return new DirectChannel();
    }
    @Bean
    MessageChannel output() {
        return new DirectChannel();
    }

    @Bean
    MyTransformer transformer() {
        return new MyTransformer();
    }
}

我的pom.xml继承自spring模块pom:

<parent>
   <groupId>org.springframework.xd</groupId>
   <artifactId>spring-xd-module-parent</artifactId>
   <version>1.3.0.RELEASE</version>
   <relativePath/>
</parent>

Transformer看起来像这样:

package mypackage;

import org.springframework.integration.annotation.MessageEndpoint;
import org.springframework.integration.annotation.Transformer;

@MessageEndpoint
public class MyTransformer
{

   @Transformer( inputChannel = "input", outputChannel = "output" )
   public String transform( String payload )
   {
     return "Test";
   }
}

1 个答案:

答案 0 :(得分:2)

src/main/resources/config/spring-modules.properties添加以下内容。

base_packages=mypackage

这将使Spring XD引擎能够接收ModuleConfiguration,然后加载您的自定义Transformer MyTransformer

其他一切看起来都不错。