[英]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.