bean的scope:
singleton: 在Spring的IoC容器中只存在一個(gè)對(duì)象實(shí)例聂沙,所有該對(duì)象的引用都共享這個(gè)實(shí)例。Spring 容器只會(huì)創(chuàng)建該bean定義的唯一實(shí)例报亩,這個(gè)實(shí)例會(huì)被保存到緩存中,并且對(duì)該bean的所有后續(xù)請(qǐng)求和引用都將返回該緩存中的對(duì)象實(shí)例,一般情況下,無(wú)狀態(tài)的bean使用該scope信轿。
prototype:每次對(duì)該bean的請(qǐng)求都會(huì)創(chuàng)建一個(gè)新的實(shí)例,一般情況下残吩,有狀態(tài)的bean使用該scope虏两。
request:每次http請(qǐng)求將會(huì)有各自的bean實(shí)例,類(lèi)似于prototype世剖。
session:在一個(gè)http session中,一個(gè)bean定義對(duì)應(yīng)一個(gè)bean實(shí)例笤虫。
global session:在一個(gè)全局的http session中旁瘫,一個(gè)bean定義對(duì)應(yīng)一個(gè)bean實(shí)例。典型情況下琼蚯,僅在使用portlet context的時(shí)候有效酬凳。
singleton和prototype的使用區(qū)別是:
在無(wú)狀態(tài),即bean中不保存用戶信息時(shí)遭庶,一般使用singleton宁仔,全局只實(shí)例化一個(gè)。
在狀態(tài)的時(shí)時(shí)候峦睡,比如有用戶信息是翎苫,每一個(gè)請(qǐng)求都創(chuàng)建一個(gè)新的實(shí)例权埠。