前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。
@Scope 簡單點說就是用來指定bean的作用域
作用域
(官方解釋:scope用來聲明IOC容器中的對象應該處的限定場景或者說該對象的存活空間,即在IOC容器在對象進入相應的scope之前,生成并裝配這些對象,在該對象不再處于這些scope的限定之后,容器通常會銷毀這些對象),其默認作用域是"singleton",如果要換成其他作用區域,直接后面添加類型即可,比如@Scope("prototype") 則為多例。
IOC容器中的對象應該處的限定場景或者說該對象的存活空間,即在IOC容器在對象進入相應的scope之前,生成并裝配這些對象,在該對象不再處于這些scope的限定之后,容器通常會銷毀這些對象),其默認作用域是"singleton",如果要換成其他作用區域,直接后面添加類型即可,比如@Scope("prototype") 則為多例。
默認是單例模式,即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即可:?
1 2 3 4 5 6 7 | <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兩種
?