簡體   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