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