1. 程式人生 > >spring有三種啟動方式

spring有三種啟動方式

spring中的提供了一個名為org.springframework.web.util.IntrospectorCleanupListener的監聽器。它主要負責處理由 JavaBeans Introspector的使用而引起的緩衝洩露。spring中對它的描述如下:
 
它是一個在web應用關閉的時候,清除JavaBeans Introspector的監聽器.在web.xml中註冊這個listener.可以保證在web 應用關閉的時候釋放與掉這個web 應用相關的class loader 和由它管理的類
 
如果你使用了JavaBeans Introspector來分析應用中的類,Introspector 緩衝中會保留這些類的引用.結果在你的應用關閉的時候,這些類以及web 應用相關的class loader沒有被垃圾回收.
 
不幸的是,清除Introspector的唯一方式是重新整理整個緩衝.這是因為我們沒法判斷哪些是屬於你的應用的引用.所以刪除被緩衝的introspection會導致把這臺電腦上的所有應用的introspection都刪掉.
 
需要注意的是,spring 託管的bean不需要使用這個監聽器.因為spring它自己的introspection所使用的緩衝在分析完一個類之後會被馬上從javaBeans Introspector緩衝中清除掉.
 
應用程式中的類從來不直接使用JavaBeans Introspector.所以他們一般不會導致內部檢視資源洩露.但是一些類庫和框架往往會產生這個問題.例如:Struts 和Quartz.
 
單個的內部檢視洩漏會導致整個的web應用的類載入器不能進行垃圾回收.在web應用關閉之後,你會看到此應用的所有靜態類資源(例如單例).這個錯誤當然不是由這個類自身引起的.