2013-03-28 49 views
1

我有一個問題與使用自定義消息處理器作爲全局vs本地。全局vs本地消息處理器

我一直在全球範圍內定義所有的自定義變壓器,並將它們引用到mule流程中。

流內定義的對象的範圍與聲明爲全局的對象的範圍有什麼區別?

如果消息處理器被定義爲全局而不是內部流,它會影響內存嗎?

除了可重用性,還有什麼好處將處理器定義爲全局?

Ex: 
Global Way of defining: 

<custom-transformer name="mycustom" class="org.MyClass" /> 
<flow name="myflow"> 
    ... 
    ... 
    <transformer ref="mycustom" /> 
    ... 
    ... 
</flow> 


Local Way of defining: 
<flow name="myflow"> 
    ... 
    ... 
    <custom-transformer name="mycustom" class="org.MyClass" /> 
    ... 
    ... 
</flow> 

該信息將有助於設計內存和代碼可維護性方面的最佳解決方案。

回答

2

本地定義的變換器在註冊表中被聲明爲不同的bean,因此一次又一次地在本地聲明它們肯定會有成本。

因此,喜歡全局聲明類似的變換器(和組件,消息處理器...)。

+0

如果組件僅使用一次,該怎麼辦?如果我在全球範圍內而不是本地範圍內聲明它,它在性能記憶方面會有所不同嗎? – user1760178

+1

不,它沒有區別:在這兩種情況下,這個單一組件將在註冊表中以單例形式結束。 –

+0

謝謝@David。 – user1760178