SPRING中屬性SCOPE的prototype

    默認狀況下,從 bean工廠所取得的實例爲Singleton(bean的singleton屬性) Singleton: Spring容器只存在一個共享的bean實例,默認的配置。 Prototype: 每次對bean的請求都會建立一個新的bean實例。兩者選擇的原則:有狀態的bean都使用Prototype做用域,而對無狀態的bean則應該使用singleton做用域。 web

    在 Spring2.0中除了之前的Singleton和Prototype外又加入了三個新的web做用域,分別爲request、session和 global session。若是你但願容器裏的某個bean擁有其中某種新的web做用域,除了在bean級上配置相應的scope屬性,還必須在容器級作一個額外的初始化配置。即在web應用的web.xml中增長這麼一個ContextListener: org.springframework.web.context.request.RequestContextListener 以上是針對Servlet 2.4之後的版本。好比Request做用域: spring

    注:有狀態的bean: session

每一個用戶有本身特有的一個實例,在用戶的生存期內,bean保持了用戶的信息,即「有狀態」;一旦用戶滅亡(調用結束或實例結束),bean的生命期也告結束。即每一個用戶最初都會獲得一個初始的bean。 

          無狀態的bean: spa

bean一旦實例化就被加進會話池中,各個用戶均可以共用。即便用戶已經消亡,bean 的生命期也不必定結束,它可能依然存在於會話池中,供其餘用戶調用。因爲沒有特定的用戶,那麼也就不能保持某一用戶的狀態,因此叫無狀態bean。但無狀態會話bean 並不是沒有狀態,若是它有本身的屬性(變量),那麼這些變量就會受到全部調用它的用戶的影響,這是在實際應用中必須注意的。
相關文章
相關標籤/搜索