我已经通过" 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
中的outputDir
和integration.xml
项。
答案 0 :(得分:0)
您的integration.xml
引用${inputDir}
,但不存在。
要使其与现有配置一起使用,请使用application.properties
和inputDir=/tmp/in
在类路径中添加/更改outputDir
文件。这样它就会与配置文件中使用的变量匹配。
如果您想坚持使用命名,请将XML更改为使用${demo.inputDir}
。这些是您在现有application.properties
中使用的名称。
如果您想坚持使用@ConfigurationProperties
,那么您可以将#{demoConfigration.inputDir}
放入XML中以访问存储配置的bean。请注意,您的代码当前失败(至少对我而言),因为您基本上定义了bean两次(每@EnableConfigurationProperties
一次,并且在配置上一次@ComponentScan+@Component
。