2016-06-26 205 views

回答

0

回調是您在EJB(或容器的生命週期)的特定位置執行自定義代碼的主要機會。

所以,舉個例子,你要初始化特定字段或組件

  • 的EJB,
  • 後的EJB已被實例化,但
  • 纔開始以服務請求

您'將執行@PostConstruct回調方法。用這個方法註釋的方法是向JavaEE運行時發佈的廣告,該方法必須在創建該類的實例後立即運行。此註釋的常見用法是將類級別的變量安裝或準備共享資源。

JavaEE規範已經將諸如此類的幾個註釋指定爲生命週期回調。這意味着在啓動時,容器知道要掃描部署工具包中是否存在實現任何可用回調的工件。這樣做時,它知道通知感興趣的組件(EJB,CDI組件,JAX-WS bean實現)特定事件,或者在應用程序服務器中發生特定操作時調用特定方法。

回撥機制本身的回調模式的實現(或事件驅動編程,如果你從一個UI編程世界未來)

延伸閱讀:

0

正式定義

回調是由企業Bean的生命週期可以攔截機制。

一個實際的例子

我想一個例子可以幫助炫耀這些回調標註的實用性。我們來看看@PreDestroy的回調。從EJB上的JBoss文檔中,我們可以看到:

PreDestroy - 當bean從池中刪除或銷燬時調用。

而且你有一個擁有某種文件資源的Bean。你想確保當Bean被銷燬時,該文件鎖定與它一起。那麼,我們知道等待垃圾收集者爲我們處理這些事情是「冒險的」做法;我們不知道它何時會運行。

但是我們可以做的是放置一些當bean被移除時調用的邏輯。

@PreDestroy 
public void cleanUp() { 
    // Clean up your FileOutputStreams etc. 
} 

在你的bean中,很明顯的是這個方法在bean被銷燬時執行,並且它不需要額外的代碼。這可以確保在bean被銷燬時清理資源。

相關問題