我目前正在使用的項目使用駱駝作爲路由框架。 當春天般地配置方面,我們通過一個包含了一堆駱駝配置路由時,需要採取全球性的或用於控制運行時行爲的屬性文件:從駱駝環境中隨機訪問駱駝屬性
<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
註釋的其他豆類。然而,在我的設計中有一個用例需要訪問我的foo
屬性,而不是由spring創建的普通POJO(一個枚舉代替但不相關)。因爲這個POJO是通過CamelContext作爲方法參數的,所以我覺得我應該能夠從那裏得到foo
的值。然而,我花了一些時間,不能自己弄清楚如何。
我知道我可以再次加載屬性文件,甚至可以獲得系統屬性System.getProperty("bar")
,一切都會正常工作,但它看起來像是在欺騙我。
非常感謝您的意見。
這是我發佈之前我嘗試過的第一件事。但我讀錯了文檔。我沒有調用上下文'resolvePropertyPlaceholders(「{{foo}}」),而是調用了'resolvePropertyPlaceholders(「foo」)'並取回了「foo」字符串。你的回答讓我睜大了眼睛,說得很對。我拒絕相信這個偉大的框架會遺漏這樣一個基本的東西。 非常感謝 – Julian