Spring以IoC、AOP為主要思想,其中IoC,Inversion of Control 指控制反轉(zhuǎn)或反向控制。在Spring框架中我們通過(guò)配置創(chuàng)建類對(duì)象,由Spring在運(yùn)行階段實(shí)例化、組裝對(duì)象。AOP,Aspect Oriented Programming,面向切面編程,其思想是在執(zhí)行某些代碼前執(zhí)行另外的代碼,使程序更靈活、擴(kuò)展性更好,可以隨便地添加、刪除某些功能。Servlet中的Filter便是一種AOP思想的實(shí)現(xiàn)。
Bean標(biāo)簽的常用屬性
(1)id屬性:用于指定配置對(duì)象的名稱,不能包含特殊符號(hào)。
(2)class屬性:創(chuàng)建對(duì)象所在類的全路徑。
(3)name屬性:功能同id屬性一致。但是在name屬性值中可以包含特殊符號(hào)。
(4)scope屬性
singleton:默認(rèn)值,單例
單例模式下,在程序下只有一個(gè)實(shí)例。非單態(tài)模式下,每次請(qǐng)求該Bean,都會(huì)生成一個(gè)新的對(duì)象。
prototype:多例
request:創(chuàng)建對(duì)象后將對(duì)象存放到request域
session:創(chuàng)建對(duì)象后將對(duì)象存放到session域
globalSession:創(chuàng)建對(duì)象后將對(duì)象存放到globalSession域
init-method="init" 始化調(diào)用了init方法
destroy-method="destroy" 銷毀時(shí)調(diào)用了init方法
spring Bean的作用域:scope="singleton"(默認(rèn),單例,生成一個(gè)實(shí)例)
單例模式,默認(rèn)在程序初始化的時(shí)候?qū)嵗?lazy-init=”false”)
spring Bean的作用域:scope="prototype"(多線程, 生成多個(gè)實(shí)例)
prototype:getBean的時(shí)候才是實(shí)例化
lazy-init 只對(duì)單例模式起作用,對(duì)prototype不起作用(因?yàn)閜rototype默認(rèn)就不是程序初始化的時(shí)候?qū)嵗模?
<bean id="gardenerClient" class="com.minipay.gamesdk.standalone.service.GardenerClientService" init-method="init" scope="singleton">
<property name="mainBusinessId" value="3"/>
<property name="gardenerConfigService" ref="gardenerConfigService"></property>
</bean>
------------------------------------------------------------------------------
name是指GardenerClientService類中的參數(shù),也既GardenerClientService類中有一個(gè)屬性名叫mainBusinessId的屬性,而value是為這個(gè)屬性名為mainBusinessId的指定值,把它當(dāng)作參數(shù)傳進(jìn)GardenerClientService中
name是指GardenerClientService類中的參數(shù),也既GardenerClientService類中有一個(gè)GardenerConfigService類型名叫g(shù)ardenerConfigService的對(duì)象,而ref是當(dāng)前xml文件中叫做gardenerConfigService的這個(gè)bean,把它當(dāng)作參數(shù)傳進(jìn)GardenerConfigService中
--------------------------------------------------------------------------
ref屬性:查找當(dāng)前配置文件里的bean
ref標(biāo)簽有3種屬性
<ref bean=""/> :查找全局中的bean。即可以查找其他xml配置文件的bean,優(yōu)先從當(dāng)前配置文件尋找
<ref local=""/> :查找當(dāng)前配置文件中bean,等同于ref屬性。local屬性值必須同目標(biāo)bean的id屬性值相同
<ref parent=""/>:指定其依賴的父JavaBean定義