| 
 內(nèi)部最核心的就是IOC了, 動(dòng)態(tài)注入,讓一個(gè)對(duì)象的創(chuàng)建不用new了,可以自動(dòng)的生產(chǎn),這其實(shí)就是利用java里的反射 反射其實(shí)就是在運(yùn)行時(shí)動(dòng)態(tài)的去創(chuàng)建、調(diào)用對(duì)象,Spring就是在運(yùn)行時(shí),跟xml Spring的配置 文件來動(dòng)態(tài)的創(chuàng)建對(duì)象,和調(diào)用對(duì)象里的方法的 。 Spring還有一個(gè)核心就是AOP這個(gè)就是面向切面編程,可以為某一類對(duì)象 進(jìn)行監(jiān)督和控制(也就是 在調(diào)用這類對(duì)象的具體方法的前后去調(diào)用你指定的 模塊)從而達(dá)到對(duì)一個(gè)模塊擴(kuò)充的功能。這些都是通過 配置類達(dá)到的。 Spring目的:就是讓對(duì)象與對(duì)象(模塊與模塊)之間的關(guān)系沒有通過代碼來關(guān)聯(lián),都是通過配置類說明 管理的(Spring根據(jù)這些配置 內(nèi)部通過反射去動(dòng)態(tài)的組裝對(duì)象) 要記?。篠pring是一個(gè)容器,凡是在容器里的對(duì)象才會(huì)有Spring所提供的這些服務(wù)和功能。 Spring里用的最經(jīng)典的一個(gè)設(shè)計(jì)模式就是:模板方法模式。(這里我都不介紹了,是一個(gè)很常用的設(shè)計(jì)模式) Spring里的配置是很多的,很難都記住,但是Spring里的精華也無非就是以上的兩點(diǎn),把以上兩點(diǎn)跟理解了 也就基本上掌握了Spring. Spring AOP與IOC 一、 IoC(Inversion of control): 控制反轉(zhuǎn) 1、IoC: 概念:控制權(quán)由對(duì)象本身轉(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)代理: 針對(duì)每個(gè)具體類分別編寫代理類; 針對(duì)一個(gè)接口編寫一個(gè)代理類; 動(dòng)態(tài)代理: 針對(duì)一個(gè)方面編寫一個(gè)InvocationHandler,然后借用JDK反射包中的Proxy類為各種接口動(dòng)態(tài)生成相應(yīng)的代理類 Spring 優(yōu)缺點(diǎn) 它是一個(gè)開源的項(xiàng)目,而且目前非?;钴S;它基于IoC(Inversion of Control,反向控制)和AOP的構(gòu)架多層j2ee系統(tǒng)的框架,但它不強(qiáng)迫你必須在每一層 中必須使用Spring,因?yàn)樗K化的很好,允許你根據(jù)自己的需要選擇使用它的某一個(gè)模塊;它實(shí)現(xiàn)了很優(yōu)雅的MVC,對(duì)不同的數(shù)據(jù)訪問技術(shù)提供了統(tǒng)一的 接口,采用IoC使得可以很容易的實(shí)現(xiàn)bean的裝配,提供了簡潔的AOP并據(jù)此實(shí)現(xiàn)Transcation Managment,等等 優(yōu)點(diǎn) a. Spring能有效地組織你的中間層對(duì)象,不管你是否選擇使用了EJB。如果你僅僅使用了Struts或其他為J2EE的 API特制的framework,Spring致力于解決剩下的問題。 b. Spring能消除在許多工程中常見的對(duì)Singleton的過多使用。根據(jù)我的經(jīng)驗(yàn),這是一個(gè)很大的問題,它降低了系統(tǒng)的可測試性和面向?qū)ο蟮某潭取?nbsp; c. 通過一種在不同應(yīng)用程序和項(xiàng)目間一致的方法來處理配置文件,Spring能消除各種各樣自定義格式的屬性文件的需要。曾經(jīng)對(duì)某個(gè)類要尋找的是哪個(gè)魔法般的屬性項(xiàng)或系統(tǒng)屬性感到不解,為此不得不去讀Javadoc甚至源編碼?有了Spring,你僅僅需要看看類的JavaBean屬性。Inversion of Control的使用(在下面討論)幫助完成了這種簡化。 d. 通過把對(duì)接口編程而不是對(duì)類編程的代價(jià)幾乎減少到?jīng)]有,Spring能夠促進(jìn)養(yǎng)成好的編程習(xí)慣。 e. Spring被設(shè)計(jì)為讓使用它創(chuàng)建的應(yīng)用盡可能少的依賴于他的APIs。在Spring應(yīng)用中的大多數(shù)業(yè)務(wù)對(duì)象沒有依賴于Spring。 f. 使用Spring構(gòu)建的應(yīng)用程序易于單元測試。 g. Spring能使EJB的使用成為一個(gè)實(shí)現(xiàn)選擇,而不是應(yīng)用架構(gòu)的必然選擇。你能選擇用POJOs或local EJBs來實(shí)現(xiàn)業(yè)務(wù)接口,卻不會(huì)影響調(diào)用代碼。 h. Spring幫助你解決許多問題而無需使用EJB。Spring能提供一種EJB的替換物,它們適用于許多web應(yīng)用。例如,Spring能使用AOP提供聲明性事務(wù)管理而不通過EJB容器,如果你僅僅需要與單個(gè)數(shù)據(jù)庫打交道,甚至不需要一個(gè)JTA實(shí)現(xiàn)。 i. Spring為數(shù)據(jù)存取提供了一個(gè)一致的框架,不論是使用的是JDBC還是O/R mapping產(chǎn)品(如Hibernate)。 Spring確實(shí)使你能通過最簡單可行的解決辦法來解決你的問題。而這是有有很大價(jià)值的。 缺點(diǎn):jsp中要寫很多代碼、控制器過于靈活,缺少一個(gè)公用控制器 | 
|  |