【Spring】的@scope註解作用
一般我們看程式碼都少會寫這個註解,因為預設不寫是單例模式,即scope="singleton"。另外scope還有prototype、request、session、global session作用域。
scope="prototype"多例
@scope預設是單例模式(singleton)
如果需要設定的話@scope("prototype")
1.singleton單例模式,
全域性有且僅有一個例項
2.prototype原型模式,
每次獲取Bean的時候會有一個新的例項
3.request
request表示該針對每一次HTTP請求都會產生一個新的bean,同時該bean僅在當前HTTP request內有效,配置例項:
request、session、global session使用的時候首先要在初始化web的web.xml中做如下配置:
如果你使用的是Servlet 2.4及以上的web容器,那麼你僅需要在web應用的XML宣告檔案web.xml中增加下述ContextListener即可:
<web-app> ... <listener> <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> </listener> ... </web-app>
4.session
session作用域表示該針對每一次HTTP請求都會產生一個新的bean,同時該bean僅在當前HTTP session內有效
5.global session
global session作用域類似於標準的HTTP Session作用域,不過它僅僅在基於portlet的web應用中才有意義。Portlet規範定義了全域性Session的概念,它被所有構成某個 portlet web應用的各種不同的portlet所共享。在global session作用域中定義的bean被限定於全域性portlet Session的生命週期範圍內。如果你在web中使用global session作用域來標識bean,那麼web會自動當成session型別來使用。
但是一般常見的話一般會使用上面1和2兩種