有状态的bean和无状态的bean的区别
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                有状态的bean和无状态的bean的区别
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.                        
                                
                            
                            
                            有狀態(tài)會話bean :每個用戶有自己特有的一個實例,在用戶的生存期內(nèi),bean保持了用戶的信息,即“有狀態(tài)”;一旦用戶滅亡(調(diào)用結(jié)束或?qū)嵗Y(jié)束),bean的生命期也告結(jié)束。即每個用戶最初都會得到一個初始的bean。 
無狀態(tài)會話bean :bean一旦實例化就被加進會話池中,各個用戶都可以共用。即使用戶已經(jīng)消亡,bean 的生命期也不一定結(jié)束,它可能依然存在于會話池中,供其他用戶調(diào)用。由于沒有特定的用戶,那么也就不能保持某一用戶的狀態(tài),所以叫無狀態(tài)bean。但無狀態(tài)會話bean 并非沒有狀態(tài),如果它有自己的屬性(變量),那么這些變量就會受到所有調(diào)用它的用戶的影響,這是在實際應(yīng)用中必須注意的。 其中bean作用域中的singleton是無狀態(tài)的作用域,prototype是有狀態(tài)的作用域...bean的整個生命周期負責(zé):容器在初始化、配置、裝飾或者是裝配完一個prototype實例后,將它交給客戶端,隨后就對該prototype實例不聞不問了。不管何種作用域,容器都會調(diào)用所有對象的初始化生命周期回調(diào)方法。但對prototype而言,任何配置好的析構(gòu)生命周期回調(diào)方法都將不會被調(diào)用。清除prototype作用域的對象并釋放任何prototype bean所持有的昂貴資源,都是客戶端代碼的職責(zé)。(讓Spring容器釋放被prototype作用域bean占用資源的一種可行方式是,通過使用bean的后置處理器,該處理器持有要被清除的bean的引用。)
                        
                        
                        無狀態(tài)會話bean :bean一旦實例化就被加進會話池中,各個用戶都可以共用。即使用戶已經(jīng)消亡,bean 的生命期也不一定結(jié)束,它可能依然存在于會話池中,供其他用戶調(diào)用。由于沒有特定的用戶,那么也就不能保持某一用戶的狀態(tài),所以叫無狀態(tài)bean。但無狀態(tài)會話bean 并非沒有狀態(tài),如果它有自己的屬性(變量),那么這些變量就會受到所有調(diào)用它的用戶的影響,這是在實際應(yīng)用中必須注意的。 其中bean作用域中的singleton是無狀態(tài)的作用域,prototype是有狀態(tài)的作用域...bean的整個生命周期負責(zé):容器在初始化、配置、裝飾或者是裝配完一個prototype實例后,將它交給客戶端,隨后就對該prototype實例不聞不問了。不管何種作用域,容器都會調(diào)用所有對象的初始化生命周期回調(diào)方法。但對prototype而言,任何配置好的析構(gòu)生命周期回調(diào)方法都將不會被調(diào)用。清除prototype作用域的對象并釋放任何prototype bean所持有的昂貴資源,都是客戶端代碼的職責(zé)。(讓Spring容器釋放被prototype作用域bean占用資源的一種可行方式是,通過使用bean的后置處理器,該處理器持有要被清除的bean的引用。)
轉(zhuǎn)載于:https://www.cnblogs.com/tiger-fu/p/8961366.html
總結(jié)
以上是生活随笔為你收集整理的有状态的bean和无状态的bean的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 面试题 : Intent、Intent
- 下一篇: Handler和Message详解
