Posted on 2006-05-25 16:39
柳隨風 閱讀(5638)
評論(6) 編輯 收藏 所屬分類:
開源框架
???????? 花了兩三天看了相關文檔,只是初步了解相關配置,沒有做深入了解,才達到基本會使用配置的目的。
個人理解:
???????? Spring 最基本的的功能是提供通過配置管理任意類,提供了Bean管理容器。這也是Spring最基礎,最核心的功能,在Spring框架中,一切皆為Bean,實際上在我們的日常開發中,往往更多的是和Bean相關的開發,并且都是短生命周期,除了一些緩存功能,其他很多重要的功能都是由開源框架完成。
??????? 實現方式也是框架常用的反射機制,因此使用Spring前提在JVM啟動參數中不能加安全管理配置。
??????? Spring中所有的Bean相關配置均為一個文件,非常集中,個人感覺這有利有弊,利大于弊。
??????? 統一配置比較方便集中,我最近的項目就是有很多子系統,除了一些公用的配置文件,還有很多子系統的配置文件,每次遷移環境是非常累的事,如果只有一個配置文件,那工作就會輕松多了。
??????? 缺點也就在于很集中,如果配置有誤,整個系統不可用,這種情況往往發生在系統升級階段,也比較少,即使出現問題也比較好定位。
?????????Spring提供了Bean管理容器,這個功能可以大大簡化業務系統的配置開發工作。
???????? 個人感覺將來的開發工作更多的是配置,編寫業務相關的Bean以及業務方法,其他功能均會有很多優秀的開源框架實現,重要的工作是選擇符合項目的框架、熟悉框架,最重要的還是苦修內功,深入學習java,因為萬變不如其中,再說開源不是萬能的,有時候還是要靠自己的。
????????
學習心得:
Spring提供三種創建類實例方法:
??? a、通過構造函數,訪問屬性可以是任意
??? b、通過對應類的靜態工廠方法,注意不能是私有的
???? c、通過工廠類的實例工廠方法,是非靜態的方法
-、bean節點相關主要屬性:
???? id/name????????? 實例名/別名
???? class????????????? 必須、類全名
???? singleton??????? 是否為單實例,默認為true
???? init-method???? 初始化方法
???? depends-on??? 指定依賴Bean,實現在被依賴Bean實例創建前,對依賴的一個或多個Bean的實例化,?
??????????????????? ????? ?init-method在對應Bean實例已經創建后調用
???? destroy-method?? 釋放回調方法,常用于資源釋放
???? dependency-check 依賴檢查
???? parent?????????? 指定父Bean實例,減少因繼承關系的重復配置
???? 說明除配置init-method,destory以外,可以在對應Bean中實現InitializingBean,DisposableBean兩個接口方法
???? Spring容器不負責管理非單實例的Bean
配置bean事項:
1、注意在通過構造器參數匹配時,必須指定參數的序號,同時建議明確說明類型,
? <constructor-arg index="0"><value>128</value></constructor-arg>
? <constructor-arg index="1"><value>teststring</value></constructor-arg>?
? 最好說明相關參數類型類型?
? <constructor-arg index="0" type="int"><value>128</value></constructor-arg>
? <constructor-arg index="1" type="java.lang.String"><value>teststring</value></constructor-arg>?
? 可以使用簡化配置
? <constructor-arg index="0" type="int"? value="128"/>
? <constructor-arg index="1" type="java.lang.String" value="testString"/>
???
2、屬性為空
??? <property name="pro1><null/></property>
3、空串
??? <property name="pro1><value></value></property>??
二、常用elements
bean | ref | idref | value | null | list | set | map | props
說明:
???? bean????? 創建一個新的bean實例
???? ref???????? 引用已經創建的bean實例
???? value????? 簡單數據類型
???? null???????? 空指針
???? list???????? 創建java.util.ArrayList對象實例
???? set???????? 創建java.util.LinkedHashSet對象實例
???? map?????? 創建java.util.LinkedHashMap對象實例
???? props???? 創建java.util.Properties實例???
list,set,map可以多層嵌套配置
遺留問題:
idref 配置沒有起作用,類似value配置,測試輸出為字符串對象,是否配置不正確?
上述配置范圍基本覆蓋了我們開發時的bean使用情況,詳見配置可以參考dtd
http://www.springframework.org/dtd/spring-beans.dtd
ApplicationContext 繼承于BeanFactory相關接口,針對企業應用級的,占有內存較多
BeanFactory???? 提供配置框架和基本功能,適用于對內存有限制的相關應用
功能:
1、提供消息訪問,ApplicationContext 本身繼承于MessageSource接口,
?? ApplicationContext 加載時查找對應的MessageSource Bean, bean id 必須為messageSource
?? Spring框架提供兩個MessageResource實現:
??? org.springframework.context.support.ResourceBundleMessageSource
??? org.springframework.context.support.StaticMessageSource
2、事件傳遞
3、使用資源