Spring
對這個框架并不陌生,spring是一個開源的控制反轉(Inversion of Control ,IoC)和面向切面(AOP)的容器框架.它的主要目得是簡化企業開發...
1.為Spring添加jar支持2.Spring:1.xml + 反射
2.不需要實例化
3.不需要set方法
以前 至上而下, 按部就班
之下而上,反的
3. bean的生命周期
bean被載入到容器中時,他的生命周期就開始
了。bean工廠在一個bean可以使用前完成很多
工作:
1.容器尋找bean的定義信息并實例化。
2.使用依賴注入,spring按bean定義信息配置bean的所有屬性。
3.若bean實現了BeanNameAware接口,工廠調用Bean的setBeanName
()方法傳遞bean的ID。
4.若bean實現了BeanFactoryAware接口,工廠調用setBeanFactory()
方法傳入工廠自身。
5.若BeanPostProcessor和bean關聯,則它們的
postProcessBeforeInitialization()方法被調用。
6.若bean指定了ini-method方法、,它將被調用。
7.最后,若有BeanPostProcessor和bean關聯,則它們的
postProcessAfterInitialization()方法被調用、。
4.set注入的缺點:
無法清晰表達哪些屬性是必須的,哪些是可選
的,構造注入的優勢是通過構造強制依賴關系,不可能實例化不
完全的或無法使用的bean。
5.自動裝配
<bean id=" " class="" autowire="autowire 類型">
有四種自動裝配類型:
1.byName:尋找和屬性名相同的bean,若找不到,則裝不上。
2.byType:尋找和屬性類型相同的bean,找不到,裝不上,找到多個拋異常。
3.constructor:查找和bean的構造參數一致的一個或
多個bean,若找不到或找到多個,拋異常。按照參數的類型裝配
4.autodetect: (3) 或者(2)方式選一個。不確定
性的處理與(3)和(2)一致。
注意:
spring2.5提供了<context:annotation-config />配置.
該配置可激活在類中探測到的各種注解,@Required @Autowire @PostConstrct @PreDestroy @Resource @EJB @PersistenceContext @WebServiceRef等等,
也可以選擇為這些注解激活單獨的后處理器.
6.屬性的外部化
分散配置
將配置文件分成幾個分散的配置文件。如數據源。
<bean class="...PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>jdbc.properties</value>
<value>securtiy.properties</value>
</list>
</property>
</bean>
當然在Spring2.5可以簡化為
<context:property-placehoder location>
7.AOP
有一些模塊是每個系統都需要的,切面是系統 模塊化的一個切面或領域。如日志記錄。不改變源代碼,還給類增加新的功能
2.連接點:應用程序執行過程中,可以應用切面的地點,可以是方法調用,異常拋出,或者要修改的
字段。
3.通知:切面的實際實現,他通知系統新的行為。
4.切入點:定義了通知應該應用在哪些連接點,通知可以應用到AOP框架支持的任何連接點。
5.引入:為類添加新方法和屬性。
6.目標對象:被通知的對象。既可以是你編寫的類也可以是第三方類。
7.代理:將通知應用到目標對象后創建的對象,應用系統的其他部分不用為了支持代理對象而
改變。
8.織入:將切面應用到目標對象從而創建一個新代理對象的過程。織入發生在目標
對象生命周期的多個點上:
編譯期:切面在目標對象編譯時織入.這需要一個特殊的編譯器.
類裝載期:切面在目標對象被載入JVM時織入.這需要一個特殊的類載入器.
運行期:切面在應用系統運行時織入.
今天到此結束,明天繼續!