2

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

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

我试图弄清楚我将如何做到这一点。当然还有更多,但这与我相信的问题有关。我正在查看Camel 文档,但我仍然对如何进行此操作有些困惑。

我在看这个帖子的问题,似乎我想使用那种类型的配置,但在我的 Spring xml 文件中。

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

4

2 回答 2

2

对于外部配置,您希望查看 OSGI cm 属性占位符;

这里有一些关于这个的信息

要覆盖在 cm:property-placeholder 块中定义的默认属性,您需要提供一个外部文件,该文件与您提供的具有“.cfg”文件类型的唯一持久标识属性值相匹配。

例如,如果您想部署到 Karaf;然后这个配置将被放入 ${KARAF_HOME}/etc/yourPID.cfg

此功能由 Spring DM 和 Blueprint 提供

于 2013-06-18T20:26:53.727 回答
1

您还可以查看设置Fuse Fabric

不是手动编辑 .cfg 文件,而是使用指定的配置文件配置结构中的每个服务器(容器)。例如,myprofile-devmyprofile-qamyprofile-prod

这会将结构配置文件中的属性(例如 foo=bar)插入到 cm 属性占位符中,并且您的蓝图配置将与 AlanFoster 在他的回答中描述的大部分相同。

这是有关Fabric Profiles的一些信息。

特别是如果您正在运行许多服务器和环境,则结构配置文件可能是管理部署和配置的好方法。

请注意,我不完全确定这如何解决您的 spring vs blueprint 问题。我选择完全取消 spring,将所有 DI 和 bean 移入蓝图中,避免 spring 与蓝图冲突,并将属性配置完全留在蓝图中。

我不确定您是否要取消弹簧 - 也许您更愿意保留它,在这种情况下,我建议您查看此链接页面底部的桥接弹簧和骆驼财产持有人部分:骆驼:使用属性占位符(我自己没试过,ymmv)。

祝你好运!

于 2013-06-19T07:13:48.707 回答