一、 IoC(Inversion of control): 控制反轉(zhuǎn)
1、IoC:
概念:控制權(quán)由對象本身轉(zhuǎn)向容器;由容器根據(jù)配置文件去創(chuàng)建實(shí)例并創(chuàng)建各個(gè)實(shí)例之間的依賴關(guān)系
核心:bean工廠;在Spring中,bean工廠創(chuàng)建的各個(gè)實(shí)例稱作bean
二、AOP(Aspect-Oriented Programming): 面向方面編程
1、 代理的兩種方式:
靜態(tài)代理:
? 針對每個(gè)具體類分別編寫代理類;
? 針對一個(gè)接口編寫一個(gè)代理類;
動態(tài)代理:
針對一個(gè)方面編寫一個(gè)InvocationHandler,然后借用JDK反射包中的Proxy類為各種接口動態(tài)生成相應(yīng)的代理類
2、 AOP的主要原理:動態(tài)代理
Spring工作原理
Spring 已經(jīng)用過一段時(shí)間了,感覺Spring是個(gè)很不錯的框架。內(nèi)部最核心的就是IOC了,
動態(tài)注入,讓一個(gè)對象的創(chuàng)建不用new了,可以自動的生產(chǎn),這其實(shí)就是利用java里的反射
反射其實(shí)就是在運(yùn)行時(shí)動態(tài)的去創(chuàng)建、調(diào)用對象,Spring就是在運(yùn)行時(shí),跟xml Spring的配置
文件來動態(tài)的創(chuàng)建對象,和調(diào)用對象里的方法的 。
Spring還有一個(gè)核心就是AOP這個(gè)就是面向切面編程,可以為某一類對象 進(jìn)行監(jiān)督和控制(也就是
在調(diào)用這類對象的具體方法的前后去調(diào)用你指定的 模塊)從而達(dá)到對一個(gè)模塊擴(kuò)充的功能。這些都是通過
配置類達(dá)到的。
Spring目的:就是讓對象與對象(模塊與模塊)之間的關(guān)系沒有通過代碼來關(guān)聯(lián),都是通過配置類說明
管理的(Spring根據(jù)這些配置 內(nèi)部通過反射去動態(tài)的組裝對象)
要記住:Spring是一個(gè)容器,凡是在容器里的對象才會有Spring所提供的這些服務(wù)和功能。
Spring里用的最經(jīng)典的一個(gè)設(shè)計(jì)模式就是:模板方法模式。(這里我都不介紹了,是一個(gè)很常用的設(shè)計(jì)模式)
Spring里的配置是很多的,很難都記住,但是Spring里的精華也無非就是以上的兩點(diǎn),把以上兩點(diǎn)跟理解了
也就基本上掌握了Spring.
1、IoC:
概念:控制權(quán)由對象本身轉(zhuǎn)向容器;由容器根據(jù)配置文件去創(chuàng)建實(shí)例并創(chuàng)建各個(gè)實(shí)例之間的依賴關(guān)系
核心:bean工廠;在Spring中,bean工廠創(chuàng)建的各個(gè)實(shí)例稱作bean
二、AOP(Aspect-Oriented Programming): 面向方面編程
1、 代理的兩種方式:
靜態(tài)代理:
? 針對每個(gè)具體類分別編寫代理類;
? 針對一個(gè)接口編寫一個(gè)代理類;
動態(tài)代理:
針對一個(gè)方面編寫一個(gè)InvocationHandler,然后借用JDK反射包中的Proxy類為各種接口動態(tài)生成相應(yīng)的代理類
2、 AOP的主要原理:動態(tài)代理
Spring工作原理
Spring 已經(jīng)用過一段時(shí)間了,感覺Spring是個(gè)很不錯的框架。內(nèi)部最核心的就是IOC了,
動態(tài)注入,讓一個(gè)對象的創(chuàng)建不用new了,可以自動的生產(chǎn),這其實(shí)就是利用java里的反射
反射其實(shí)就是在運(yùn)行時(shí)動態(tài)的去創(chuàng)建、調(diào)用對象,Spring就是在運(yùn)行時(shí),跟xml Spring的配置
文件來動態(tài)的創(chuàng)建對象,和調(diào)用對象里的方法的 。
Spring還有一個(gè)核心就是AOP這個(gè)就是面向切面編程,可以為某一類對象 進(jìn)行監(jiān)督和控制(也就是
在調(diào)用這類對象的具體方法的前后去調(diào)用你指定的 模塊)從而達(dá)到對一個(gè)模塊擴(kuò)充的功能。這些都是通過
配置類達(dá)到的。
Spring目的:就是讓對象與對象(模塊與模塊)之間的關(guān)系沒有通過代碼來關(guān)聯(lián),都是通過配置類說明
管理的(Spring根據(jù)這些配置 內(nèi)部通過反射去動態(tài)的組裝對象)
要記住:Spring是一個(gè)容器,凡是在容器里的對象才會有Spring所提供的這些服務(wù)和功能。
Spring里用的最經(jīng)典的一個(gè)設(shè)計(jì)模式就是:模板方法模式。(這里我都不介紹了,是一個(gè)很常用的設(shè)計(jì)模式)
Spring里的配置是很多的,很難都記住,但是Spring里的精華也無非就是以上的兩點(diǎn),把以上兩點(diǎn)跟理解了
也就基本上掌握了Spring.
sunlightcs (架構(gòu)師)的說法:
struts是一個(gè)MVC框架,當(dāng)用戶瀏覽網(wǎng)頁的時(shí)候,呈現(xiàn)給用戶的頁面就是V,當(dāng)用戶發(fā)送請求的時(shí)候,就會在struts的配置文件里到處理此請求的 ACTION(這就是C),ACTION調(diào)用相應(yīng)的業(yè)務(wù)組件,完成相應(yīng)的業(yè)務(wù)時(shí)(這就是M),又會到struts的配置文件里尋找對應(yīng)的頁面,返回頁面給 用戶。整個(gè)流程就這個(gè)樣子。
其中M層做的事比較多,所有的業(yè)務(wù)功能都在這里實(shí)現(xiàn)(當(dāng)然也有一些不規(guī)范的寫法,把業(yè)務(wù)寫在ACTION里),如果要與數(shù)據(jù)庫交互,M層就要調(diào)用 數(shù)據(jù)庫了,通過Hibernate實(shí)現(xiàn),Hibernate主要是跟數(shù)據(jù)庫打交道.
其中,所有的業(yè)務(wù)功能及ACTION以及DAO都可以交給SPRING管理,SPRING的最常用的功能是IOC、AOP,IOC就是通過依賴注 入把所有的BEAN交給SPRING管理;AOP實(shí)現(xiàn)的功能很多,比如:所有的服務(wù)層都要有事務(wù),可以通過AOP攔截所有服務(wù)層的類,再通過IOC把事務(wù) 注入進(jìn)去了。
SSH整合:
http://www.aygfsteel.com/action/archive/2007/08/28/140566.html
SSH在項(xiàng)目中的作用及原理
http://blog.csdn.net/dustin_ren/archive/2009/03/31/4038601.aspx
自己動手寫spring
http://www.javaeye.com/topic/413449