Spring一種開(kāi)源輕量級(jí)框架鸿吆,為了解決企業(yè)應(yīng)用程序開(kāi)發(fā)復(fù)雜性而創(chuàng)建的课幕。致力于JavaEE應(yīng)用的各層解決方案而不僅僅專注于某一層的方案透硝。Spring技術(shù)很容易于使用初斑,并能促進(jìn)開(kāi)發(fā)人員良好的編程習(xí)慣数焊。
Spring核心技術(shù)
AOP(面向切面)永淌、IOC(控制反轉(zhuǎn))。
控制反轉(zhuǎn)可以將傳統(tǒng)的實(shí)例化方式交給ioc進(jìn)行實(shí)例化佩耳,從而提高應(yīng)用程序的響應(yīng)效率遂蛀。
Spring體系結(jié)構(gòu)
1.2版本分以下七個(gè),2.0優(yōu)化為六個(gè)干厚。
Spring core:Spring框架的和心,提供IOC和依賴注入蛮瞄。
Spring Context:提供了一種框架風(fēng)格的方式所坯,來(lái)訪問(wèn)對(duì)象,有些像是JNDI注冊(cè)表挂捅。繼承了Beans包的功能芹助,同時(shí)增加了國(guó)際化,事件傳播,資源裝載状土,資源裝載以及透明創(chuàng)建上下文苗缩。
Spring APO:通過(guò)配置管理,Spring AOP直接將AOP的功能集成到了Spring框架中声诸。
Spring Dao:提供了JDBC的抽象層,可以冗長(zhǎng)的JDBC編碼和解析數(shù)據(jù)庫(kù)廠商特有的錯(cuò)誤代碼退盯。
Spring ORM:Spring框架插入了若干個(gè)ORM框架彼乌,從而提供了ORM對(duì)象關(guān)系。其中包括渊迁,JDO,hibernate,ibatis慰照。所有這些都遵從Spring的通用事務(wù)和DAO層異常層次結(jié)構(gòu)。
Spring WEB模塊:web上下文模塊建立在應(yīng)用程序上下文模塊智商琉朽,為基于web的應(yīng)用程序提供了上下文毒租,所以,他支持與JakartaStruts的繼承箱叁。
Spring MVC框架:MVC框架是一個(gè)全功能的構(gòu)建web應(yīng)用程序的MVC實(shí)現(xiàn)墅垮。
每個(gè)部分的使用場(chǎng)景即功能
Spring core:最基礎(chǔ),提供IOC和依賴注入耕漱。管理bean與bean之間的依賴
Spring Context:上下文容器算色,beanFactory功能加強(qiáng)的一個(gè)自接口
Spring WEB:WEB應(yīng)用開(kāi)發(fā)的支持
Spring MVC:針對(duì)web應(yīng)用MVC思想實(shí)現(xiàn)
Spring DAO:提供了JDBC的抽象層,簡(jiǎn)化了編碼螟够,同時(shí)使之更健壯
Spring ORM:與流行的ORM框架的整合
Spring AOP:面向切面灾梦,提供與AOP聯(lián)盟兼容的編成實(shí)現(xiàn)。
Spring和SpringContext
Spring核心以BeanFactory為基礎(chǔ)妓笙,管理bean之間的依賴關(guān)系若河,它的的核心機(jī)制就是依賴注入,以此達(dá)到bean對(duì)bean實(shí)現(xiàn)類的以來(lái)寞宫。程序從面向具體類的編程萧福,轉(zhuǎn)向面向接口編程。而Spring Context是對(duì)BeanFactory的加強(qiáng)辈赋,它提供了在J2EE中的大量增強(qiáng)功能统锤,比如隨web應(yīng)用啟動(dòng)的自動(dòng)創(chuàng)建,程序國(guó)際化等炭庙。
Spring WEB和Spring MVC
提供web應(yīng)用的支持饲窿,Spring Web圍繞分發(fā)器(DispatcherServlet)設(shè)計(jì),DispatcherServlet將請(qǐng)求分發(fā)到不同的處理器焕蹄。Spring MVC提供了清洗的角色劃分:控制器逾雄,驗(yàn)證器,命令對(duì)象,表單對(duì)象鸦泳,模型對(duì)象银锻,分發(fā)器,處理器做鹰,映射和試圖解析器击纬。Spring支持多重表現(xiàn)技術(shù)。velocity xslt設(shè)置可以直接輸出PDF文檔或者excel文檔
Spring AOP 面向切面編程
起源于OOP 對(duì)OOP的補(bǔ)充和完善钾麸,解決了OOP無(wú)力解決的問(wèn)題更振。但不可以相互替代。完善了Spring的依賴注入饭尝,主要變現(xiàn)在:
面向切面編程提供聲明式事務(wù)處理
Spring支持用戶自定義切面
還可以與AspectJ整合肯腕,整合允許通過(guò)依賴注入配置AspectJ切面
AOP舉例:于OOP中,程序代碼可以理解為上下銜接钥平。比如某行對(duì)象操作出現(xiàn)了異常实撒,對(duì)于OOP接下來(lái)就是異常處理。而對(duì)于AOP程序中不必寫異常處理涉瘾,直接運(yùn)行后續(xù)代碼知态,可以將異常看做透明立叛。將異常交給AOP攔截器肴甸,執(zhí)行異常處理。簡(jiǎn)單說(shuō)囚巴,AOP攔截程序流程原在,執(zhí)行截面里代碼
SpringDao Spring ORM 持久化支持
并沒(méi)有實(shí)現(xiàn)自己的持久化方案,集合了現(xiàn)有流行持久化框架 JDO,Hibernate,iBaties并切使用JDBC模板彤叉,封裝了JDBC的數(shù)據(jù)庫(kù)操作庶柿。Spring都提供了一致的編程方式,無(wú)論是JDBC還是各種流行的ORM持久化框架秽浇,Spring都提供了一致的異常繼承體系浮庐。它使用模板封裝持久化訪問(wèn)的通用步驟,來(lái)自底層數(shù)據(jù)庫(kù)的異常都是難以恢復(fù)的柬焕,所以审残,Spring將數(shù)據(jù)庫(kù)訪問(wèn)的checked異常轉(zhuǎn)換為運(yùn)行時(shí)異常,避免使用繁瑣的try斑举。搅轿。。catch塊
Spring核心組件
Context Beans(最核心) Core 構(gòu)建了Spring骨架結(jié)構(gòu)富玷。不可能有AOP WEB功能
Spring設(shè)計(jì)理念
Beans才是最核心的璧坟,容器使用DI(依賴注入)管理所有組成應(yīng)用系統(tǒng)的組件(Beans)
Spring的設(shè)計(jì)目標(biāo)
對(duì)象之間的依賴關(guān)系用配置文件實(shí)現(xiàn)既穆。實(shí)際就是依賴注入機(jī)制,注入關(guān)系在IOC容器中管理雀鹃。Spring將對(duì)象包裝在bean中達(dá)到對(duì)這些對(duì)象的管理幻工。
Beans組件才是三個(gè)核心組件中的核心,bean在Spring中的作用就像是Object對(duì)OOP的意義黎茎,沒(méi)有對(duì)象就沒(méi)有面向?qū)ο缶幊棠衣琒pring中沒(méi)有bean就沒(méi)有Spring存在的意義。
Context:bean包裝Object,數(shù)據(jù)傅瞻,為數(shù)據(jù)提供生存環(huán)境踢代。發(fā)現(xiàn)bean關(guān)系,并進(jìn)行維護(hù)俭正。看做Bean關(guān)系集合焙畔。IOC容器
Core:發(fā)現(xiàn)掸读、建立和維護(hù)每個(gè)Bean之間關(guān)系所需要的一系列工具