我们的项目正在使用Apache Camel和FuseESB,我们也在使用Spring。现在我们有一些属性文件,我们在构建项目时定义(使用Maven)。
我们希望将属性文件移动到每个系统(dev / qa / prod)上的外部文件,并将其用作属性文件。
我正在试图弄清楚我将如何做到这一点。 当然还有更多,但这与我认为的问题有关。 我正在看Camel documentation,但我仍然对如何解决这个问题感到困惑。
我在这个问题上看了post,似乎我想在我的Spring xml文件中使用那种配置。
我只需要一些一般的指导, 谢谢!
答案 0 :(得分:2)
对于外部配置,您希望查看OSGI cm属性占位符;
有关此here
的一些信息要覆盖cm:property-placeholder块中定义的默认属性,您需要提供一个外部文件,该文件与您提供的文件类型为“.cfg”的唯一persistent-id属性值相匹配。
如果您想要部署到Karaf,例如;然后这个配置将被放入$ {KARAF_HOME} /etc/yourPID.cfg
此功能随Spring DM和Blueprint
一起提供答案 1 :(得分:1)
您还可以查看设置Fuse Fabric。
不是手动编辑.cfg文件,而是使用指定的配置文件配置结构中的每个服务器(容器)。例如, myprofile-dev , myprofile-qa , myprofile-prod 。
这会将结构配置文件中的属性(例如foo = bar)插入到cm属性占位符中,并且您的蓝图配置与AlanFoster在其答案中描述的大致相同。
以下是Fabric Profiles的一些信息。
特别是如果您运行的是许多服务器和环境,则结构配置文件可以是管理部署和配置的好方法。
请注意,我不完全确定这如何解决你的春天与蓝图问题。我选择完全取消弹簧,并移动所有DI&将bean转换为蓝图,避免弹簧与蓝图冲突,并将属性配置专门保留在蓝图中。
我不确定你是否想要取消春天 - 也许你宁愿保留它,在这种情况下我可以建议看看 Bridging Spring和Camel财产持有人部分在此链接下方的页面底部:Camel: Using Property Placeholder(我自己没试过,ymmv)。
祝你好运!