Spring“集成数据”入门指南 - 使用integration.xml文件中的变量

时间:2014-10-28 05:20:26

标签: spring-integration spring-boot

我已经通过" Integrating Data" Spring网站上的指南,并一直在尝试确定如何在integration.xml文件中使用配置设置(替换),而不是硬编码各种项目。这主要是因为希望从XML外部化一些配置,并利用Spring Boot的能力来实现外部化配置。

我一直试图确定解决方案一段时间,并认为它可能是一个简单的答案(对于那些知道如何)。

在下面的代码段(摘自指南)中,我使用${outputDir}作为配置项的占位符,我将传入应用程序:

<file:outbound-channel-adapter id="files"
        mode="APPEND"
        charset="UTF-8"
        directory="${outputDir}"
        filename-generator-expression="'HelloWorld'"/>

基本上,我试图确定我需要做些什么来使${outputDir}替换工作。

作为解决问题的一部分,我将代码缩减为demo that I've uploaded to BitBucket

  • integration.xml只会将文件从file:inbound-channel-adapter目录复制到file:outbound-channel-adapter目录
  • Application类使用Spring Boot将配置加载到DemoIntegration实例中,它是该实例中我希望在运行时替换为integration.xml的字段。

除非我弄错了(当我开始工作时),我应该能够覆盖inputDir中的outputDirintegration.xml项。

1 个答案:

答案 0 :(得分:0)

您的integration.xml引用${inputDir},但不存在。

要使其与现有配置一起使用,请使用application.propertiesinputDir=/tmp/in在类路径中添加/更改outputDir文件。这样它就会与配置文件中使用的变量匹配。

如果您想坚持使用命名,请将XML更改为使用${demo.inputDir}。这些是您在现有application.properties中使用的名称。

如果您想坚持使用@ConfigurationProperties,那么您可以将#{demoConfigration.inputDir}放入XML中以访问存储配置的bean。请注意,您的代码当前失败(至少对我而言),因为您基本上定义了bean两次(每@EnableConfigurationProperties一次,并且在配置上一次@ComponentScan+@Component