使用外部.cfg文件而不是在构建时定义Property文件

时间:2013-06-17 18:27:33

标签: java spring properties apache-camel fuseesb

我们的项目正在使用Apache Camel和FuseESB,我们也在使用Spring。现在我们有一些属性文件,我们在构建项目时定义(使用Maven)。

我们希望将属性文件移动到每个系统(dev / qa / prod)上的外部文件,并将其用作属性文件。

我正在试图弄清楚我将如何做到这一点。 当然还有更多,但这与我认为的问题有关。 我正在看Camel documentation,但我仍然对如何解决这个问题感到困惑。

我在这个问题上看了post,似乎我想在我的Spring xml文件中使用那种配置。

我只需要一些一般的指导, 谢谢!

2 个答案:

答案 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)。

祝你好运!