在現實世界的應用程序中,可能使用銷燬方法的一個可能示例?爲什麼一個正在運行的應用程序想要銷燬它的bean?如果bean是通過ContextLoaderListener爲Web應用程序的spring容器創建的,那麼這些bean如何重新創建,因爲容器已經啓動。有沒有辦法在不重新啓動應用程序服務器的情況下重新啓動Spring IoC容器?春豆銷燬方法
春豆銷燬方法
回答
一個例子是DataSource
或任何需要清理的資源。你可能有這樣的事情:
@Bean(destroyMethod = "close")
DataSource dataSource() {
....
}
這可與多個類加載器像一個應用服務器,以防止內存泄漏的環境中尤其重要。
有時候這樣做是多餘的,因爲底層資源可能會自行清理(比如說,作爲servlet生命週期中contextDestroyed
事件的一部分),但您應該始終驗證這一點。
這些彈簧docs也是一個有用的參考。 ,引用的例子有類似:
<bean id="exampleInitBean" class="examples.ExampleBean" destroy-method="cleanup"/>
然後bean類:
public class ExampleBean {
public void cleanup() {
// do some destruction work (like releasing pooled connections)
}
}
有可能刷新上下文。這answer提供了一個很好的解釋,當你可能想要做到這一點。
波紋管是我的看法:
這可能是一個可能的實例的使用在現實世界的應用程序破壞方法的?
對於大多數應用程序,也許我們專注於真正的企業居多,所以我們不常見面,其中需要定義破壞方法場景。但是,當你滿足一些基本的組件或中間件,則需要注意資源管理,如數據庫連接,內存使用,磁盤使用等。你必須知道如何明確釋放不必要的資源控股,否則這會造成嚴重的問題。
如果beans是由Spring容器爲Web應用程序創建的,例如ContextLoaderListener,那麼這些bean如何重新創建,因爲容器已經啓動了?
Spring容器不僅爲Web應用程序,它可以成爲常見的Java應用程序(主要用途)。Spring容器有兩種不同的Bean類型(辛格爾頓和原型),辛格爾頓豆只能提前實例化時Spring容器完成啓動,而bean原型將通過調用被實例化getBean每次。
有沒有辦法在不重啓應用程序服務器的情況下重新啓動Spring IoC容器?
Spring IoC容器開始通過調用AbstractRefreshableApplicationContext.refresh()方法進行實例化。如果您以前實例化了Container,則此方法將銷燬整個Spring IoC Container。因此,您可以調用此方法重新實例化Container。如果您想了解的Spring IoC機制,我建議你閱讀了Spring的源代碼:彈簧核心,彈簧豆,春天上下文。
希望能幫到你。
我在Spring應用程序中看到了bean,它直接或間接地啓動了非守護進程線程。然後在不殺死流程的情況下停止流程變得不可能。這影響了一些處理自動化測試的Jenkins作業。所以在DevOps世界裏有很多真實世界的例子
- 1. 春季所有豆的全局銷燬方法
- 2. 試圖以正確的順序銷燬豆與春
- 3. 春天 - 我如何銷燬我的原型範圍的豆子?
- 4. Laravel 5.0銷燬方法
- 5. 書寫方法銷燬並創建鏈接銷燬對象
- 6. 春季數據CrudRepository作爲方法豆
- 7. 無法銷燬PouchDB
- 8. 用水豚測試銷燬方法
- 9. Rails模型關聯和銷燬方法
- 10. jQuery Tools - > Tooltip銷燬方法?
- 11. 在rails和Mongoid中銷燬方法
- 12. jQuery:向插件添加銷燬方法
- 13. TabHost方法來銷燬標籤?
- 14. Laravel 5刪除與銷燬方法
- 15. 正確的方法來銷燬鏈表?
- 16. 調用servlet的銷燬方法
- 17. Laravel 4:鏈接到銷燬方法
- 18. 設計:會話調用方法#銷燬
- 19. 春季引導豆注入豆注入方法
- 20. 如何銷燬多態模型?方法銷燬缺少的參數
- 21. C#通過Excel過程銷燬多個Excel對象的正確方法銷燬
- 22. 銷燬方法沒有開火以銷燬複雜形式的嵌套資源
- 23. 春季豆執法範圍
- 24. 春豆別名的用法
- 25. 銷燬
- 26. 我無法銷燬會話
- 27. 無法銷燬jQuery插件
- 28. 無法銷燬活動... java.lang.NullPointerException:observer
- 29. JMeter無法銷燬會話
- 30. Rails:無法銷燬關聯