2012-06-19 38 views
0

我有一個事件觀察者類。這是一個通用的郵件程序。它需要事件並創建一封電子郵件。我想創建這個觀察者類的多個實例,像這樣:CDI中同一類的多位觀察者

<m:Mailer 
resource="WEB-INF/email/adminConfirmation.ftl" 
emailNotificationAddress="[email protected]"> 
    <order:onOrderChange> 
     <s:parameters> 
     <order:StateChange> 
      <s:Observes /> 
     </order:StateChange> 
     </s:parameters> 
    </order:onOrderChange> 
</m:Mailer> 
<m:Mailer 
resource="WEB-INF/email/userConfirmation.ftl" 
emailNotificationAddress="${order.user.email}"> 
    <order:onOrderChange> 
     <s:parameters> 
     <order:StateChange> 
      <s:Observes /> 
     </order:StateChange> 
     </s:parameters> 
    </order:onOrderChange> 
</m:Mailer> 

,此外我想它繼承它是基於註釋信息,所以我沒有申報順序如下:每次onOrderChange方法。我試圖用s來聲明兩個實例:修改。但無論我做什麼,只有一個偵聽器實例附加。

我非常希望附加與事件觀察者相同類的多個不同配置的實例。並沒有發現還沒有任何解決辦法...如果你發佈類,而不是縫3 XML配置

回答

0

可能是大家比較容易... :-)

什麼你正在尋找一個是一個通用的郵件程序,可偵聽不同的事件並根據事件發送不同的郵件,對嗎?我不確定我是否看到需求的通用部分,您可能需要在問題中添加更多信息以清楚說明。

什麼我建議取而代之的是具有單個MailSender,偵聽單個事件(例如RegistrationMailEvent)具有不同的限定符註釋(@Admin@User)。我會在一個地方開始完整的電子郵件邏輯 - 如果太複雜了,你仍然可以將它重構成更多的豆。

這是否適合您的需求?

哦,順便說一句:事件是同步的 - 所以你必須知道,你正在停止執行的線程,直到事件處理完成。如果郵件服務器速度很慢,這可能不是理想的。

+0

澄清 - 實施並不重要。我詢問了如何創建同一個類的多個觀察者bean實例(閱讀主題)。實施和目的並不重要。假設這些bean具有完全相同的實現,但參數不同。 –

+0

這應該是一個不錯的地方,所以你可以放心地假設我讀了你的文章的主題。 –