[英]Spring beans, Lifecycle in a XmlWebApplicationContext (web context)
我已經找到了關於這個問題的上一個SF問題,我相信設置init-method
和destroy-method
屬性就足夠了。 但我希望以一種不同的方式提出這個問題以進一步理解。
如果我理解正確,那么實現org.springframework.context.Lifecycle
的類在Web應用程序上下文(即org.springframework.web.context.support.XmlWebApplicationContext
)中的行為將與其他應用程序上下文中的行為不同? 它將執行此操作,因為XmlWebApplicationContext
的start()
(將啟動包含的Lifecycle bean)將在加載上下文配置文件之前執行。
這個對嗎?
我不這么認為。 start()
方法由doStart()
調用,兩者都在AbstractApplicationContext
,后者是所有應用程序上下文的超類。 所以應該沒有區別。
Lifecycle
接口應該由想要參與容器生命周期的bean實現。 這主要是由容器本身實現的(參見此處的文檔 ),盡管這些容器中的bean也可以在他們選擇時實現它,並且啟動/停止信號將傳播給它們。
start()
和stop()
方法本質上是容器剛剛開始啟動或即將停止的通知。
對於應用程序組件,我很難為此找到一個好的用例。 業務對象應該只關注自己的生命周期,而不是容器的生命周期。 一個很好的理由是當你使用非單例范圍(例如請求范圍)時,bean的生命周期獨立於容器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.