我们的项目使用的是Apache Camel和FuseESB,我们也使用了Spring。现在,我们有一些在构建项目时定义的属性文件(使用Maven)。
我们希望将属性文件移动到每个系统上的外部文件(dev/qa/prod),并将其用作属性文件。
我正在试着弄清楚我该怎么做。当然还有更多,但这与我相信的问题有关。我一直在看Camel documentation,但我还是有点困惑,不知道该怎么做。
我正在研究这个问题的post,似乎我想在我的Spring xml文件中使用这种类型的配置。
我只需要一些一般的指导,谢谢!
发布于 2013-06-19 04:26:54
对于外部配置,您需要查看OSGI cm属性占位符;
下面是有关此here的一些信息
若要覆盖在cm:property-placeholder块中定义的默认属性,您需要提供一个外部文件,该文件与您为文件类型'.cfg‘提供的唯一persistent-id属性值相匹配。
例如,如果您想要部署到Karaf;则此配置将被放入${KARAF_HOME}/etc/yourPID.cfg
Spring DM和Blueprint都提供了此功能
发布于 2013-06-19 15:13:49
您还可以考虑设置Fuse Fabric。
交换矩阵中的每个服务器(容器)都配置了指定的配置文件,而不是手动编辑.cfg文件。例如,myprofile-dev、myprofile-qa、myprofile-prod。
这会将fabric配置文件中的属性(例如foo=bar)直接插入到cm属性占位符中,您的蓝图配置将与AlanFoster在其答案中所描述的基本相同。
这里有一些关于Fabric Profiles的信息。
特别是当您运行许多服务器和环境时,fabric配置文件是管理部署和配置的好方法。
请注意,我不完全确定这如何解决您的spring vs蓝图问题。我选择完全放弃spring,并将所有DI和bean移到blueprint中,从而避免了spring与blueprint的冲突,并将属性的配置完全保留在blueprint中。
我不确定你是否想要废除spring --也许你更喜欢保留它,在这种情况下,我可以建议你看看页面底部的连接Spring和Camel属性持有者的部分:Camel: Using Property Placeholder (我自己还没有尝试过,ymmv)。
祝好运!
https://stackoverflow.com/questions/17154267
复制相似问题