Spring以IoC、AOP爲主要思想,其中IoC,Inversion of Control 指控制反轉或反向控制。在Spring框架中我們通過配置創建類對象,由Spring在運行階段實例化、組裝對象。AOP,Aspect Oriented Programming,面向切面編程,其思想是在執行某些代碼前執行另外的代碼,使程序更靈活、擴展性更好,可以隨便地添加、刪除某些功能。Servlet中的Filter便是一種AOP思想的實現。
Bean標籤的常用屬性
(1)id屬性:用於指定配置對象的名稱,不能包含特殊符號。
(2)class屬性:創建對象所在類的全路徑。
(3)name屬性:功能同id屬性一致。但是在name屬性值中可以包含特殊符號。
(4)scope屬性
singleton:默認值,單例
單例模式下,在程序下只有一個實例。非單態模式下,每次請求該Bean,都會生成一個新的對象。
prototype:多例
request:創建對象後將對象存放到request域
session:創建對象後將對象存放到session域
globalSession:創建對象後將對象存放到globalSession域
init-method="init" 始化調用了init方法
destroy-method="destroy" 銷燬時調用了init方法
spring Bean的作用域:scope="singleton"(默認,單例,生成一個實例)
單例模式,默認在程序初始化的時候實例化(lazy-init=”false”)
spring Bean的作用域:scope="prototype"(多線程, 生成多個實例)
prototype:getBean的時候纔是實例化
lazy-init 只對單例模式起作用,對prototype不起作用(因爲prototype默認就不是程序初始化的時候實例化的)
<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類中的參數,也既GardenerClientService類中有一個屬性名叫mainBusinessId的屬性,而value是爲這個屬性名爲mainBusinessId的指定值,把它當作參數傳進GardenerClientService中
name是指GardenerClientService類中的參數,也既GardenerClientService類中有一個GardenerConfigService類型名叫gardenerConfigService的對象,而ref是當前xml文件中叫做gardenerConfigService的這個bean,把它當作參數傳進GardenerConfigService中
--------------------------------------------------------------------------
ref屬性:查找當前配置文件裏的bean
ref標籤有3種屬性
<ref bean=""/> :查找全局中的bean。即可以查找其他xml配置文件的bean,優先從當前配置文件尋找
<ref local=""/> :查找當前配置文件中bean,等同於ref屬性。local屬性值必須同目標bean的id屬性值相同
<ref parent=""/>:指定其依賴的父JavaBean定義