繁体   English   中英

从骆驼上下文以编程方式访问骆驼属性

[英]Programmatically accessing camel property from camel context

我目前正在工作的项目使用骆驼作为路由框架。 在春季配置骆驼上下文时,我们传递了一个属性文件,其中包含配置骆驼路由或控制运行时行为所需的一堆全局属性:

<camel:camelContext xmlns="http://camel.apache.org/schema/spring" id="my-id">
    <camel:propertyPlaceholder location="my-system.properties" id="global-properties"/>
    ...
</camel:camelContext>

并说my-system.properties具有如下条目:

my-system.properties
# Global properties that control my-system configuration and run time
...
foo={{bar}} 
...

配置路由时,我可以使用{{foo}}表示法访问foo属性。 使用@PropertyInject批注的其他bean也可以使用它。 但是,在我的设计中有一个用例,当一个不是由spring创建的普通POJO(而是一个枚举,但不相关)需要访问我的foo属性时。 因为此POJO传递了CamelContext作为方法参数,所以我很自然地认为我应该能够从那里获取foo的值。 但是我花了一些时间,无法自己弄清楚怎么做。

我知道我可以再次加载属性文件,甚至可以获取系统属性System.getProperty("bar") ,一切都会正常运行,但对我来说似乎是作弊。

CamelContext上有一个用于解析属性占位符的api-它的resolvePropertyPlaceholders方法:

如果您的POJO不受SpringContext的管理,我看不到任何可以自动注入属性的方法。 尽管您的方法似乎并不是最理想或最优雅的方法,但它的优点是不会给您带来使用其他注入工具可能带来的任何开销。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM