一.Spring框架的作用
輕量:Spring是輕量級(jí)的,基本的版本大小為2MB
控制反轉(zhuǎn):Spring通過(guò)控制反轉(zhuǎn)實(shí)現(xiàn)了松散耦合,對(duì)象們給出它們的依賴,而不是創(chuàng)建或查找依賴的對(duì)象們。
面向切面的編程AOP:Spring支持面向切面的編程,并且把應(yīng)用業(yè)務(wù)邏輯和系統(tǒng)服務(wù)分開(kāi)。
容器:Spring包含并管理應(yīng)用中對(duì)象的生命周期和配置
MVC框架:Spring-MVC
事務(wù)管理:Spring提供一個(gè)持續(xù)的事務(wù)管理接口,可以擴(kuò)展到上至本地事務(wù)下至全局事務(wù)JTA
異常處理:Spring提供方便的API把具體技術(shù)相關(guān)的異常
二.Spring的組成
Spring由7個(gè)模塊組成:
SpringCore:核心容器提供Spring框架的基本功能。核心容器的主要組件是BeanFactory,它是工廠模式的實(shí)現(xiàn)。BeanFactory使用控制反轉(zhuǎn)(IOC)模式將應(yīng)用程序的配置和依賴性規(guī)范與實(shí)際的應(yīng)用程序代碼分開(kāi)。
Spring上下文:Spring上下文是一個(gè)配置文件,向Spring框架提供上下文信息。Spring上下文包括企業(yè)服務(wù),例如JNDI、EJB、電子郵件、國(guó)際化、校驗(yàn)和調(diào)度功能。
SpringAOP:通過(guò)配置管理特性,SpringAOP模塊直接將面向方面的編程功能集成到了Spring框架中。所以,可以很容易地使Spring框架管理的任何對(duì)象支持AOP。SpringAOP模塊為基于Spring的應(yīng)用程序中的對(duì)象提供了事務(wù)管理服務(wù)。通過(guò)使用SpringAOP,不用依賴EJB組件,就可以將聲明性事務(wù)管理集成到應(yīng)用程序中。
SpringDAO:JDBCDAO抽象層提供了有意義的異常層次結(jié)構(gòu),可用該結(jié)構(gòu)來(lái)管理異常處理和不同數(shù)據(jù)庫(kù)供應(yīng)商拋出的錯(cuò)誤消息。異常層次結(jié)構(gòu)簡(jiǎn)化了錯(cuò)誤處理,并且極大地降低了需要編寫(xiě)的異常代碼數(shù)量(例如打開(kāi)和關(guān)閉連接)。SpringDAO的面向JDBC的異常遵從通用的DAO異常層次結(jié)構(gòu)。
SpringORM:Spring框架插入了若干個(gè)ORM框架,從而提供了ORM的對(duì)象關(guān)系工具,其中包括JDO、Hibernate和iBatisSQLMap。所有這些都遵從Spring的通用事務(wù)和DAO異常層次結(jié)構(gòu)。
SpringWeb模塊:Web上下文模塊建立在應(yīng)用程序上下文模塊之上,為基于Web的應(yīng)用程序提供了上下文。所以,Spring框架支持與JakartaStruts的集成。Web模塊還簡(jiǎn)化了處理多部分請(qǐng)求以及將請(qǐng)求參數(shù)綁定到域?qū)ο蟮墓ぷ鳌?/p>
SpringMVC框架:MVC框架是一個(gè)全功能的構(gòu)建Web應(yīng)用程序的MVC實(shí)現(xiàn)。通過(guò)策略接口,MVC框架變成為高度可配置的,MVC容納了大量視圖技術(shù),其中包括JSP、Velocity、Tiles、iText和POI。
三.Spring容器
Sping的容器可以分為兩種類(lèi)型
1.BeanFactory:(org.springframework.beans.factory.BeanFactory接口定義)是最簡(jiǎn)答的容器,提供了基本的DI支持。最常用的BeanFactory實(shí)現(xiàn)就是XmlBeanFactory類(lèi),它根據(jù)XML文件中的定義加載beans,該容器從XML文件讀取配置元數(shù)據(jù)并用它去創(chuàng)建一個(gè)完全配置的系統(tǒng)或應(yīng)用。
2.ApplicationContext應(yīng)用上下文:(org.springframework.context.ApplicationContext)基于BeanFactory之上構(gòu)建,并提供面向應(yīng)用的服務(wù)。
四.ApplicationContext通常的實(shí)現(xiàn)
ClassPathXmlApplicationContext:從類(lèi)路徑下的XML配置文件中加載上下文定義,把應(yīng)用上下文定義文件當(dāng)做類(lèi)資源。
FileSystemXmlApplicationContext:讀取文件系統(tǒng)下的XML配置文件并加載上下文定義。
XmlWebApplicationContext:讀取Web應(yīng)用下的XML配置文件并裝載上下文定義。
1ApplicationContextcontext=newClassPathXmlApplicationContext("applicationContext.xml");
五.IOC&DI
InversionofControl,一般分為兩種類(lèi)型:依賴注入DI(DependencyInjection)和依賴查找(DependencyLookup).依賴注入應(yīng)用比較廣泛。
SpringIOC扶著創(chuàng)建對(duì)象,管理對(duì)象(DI),裝配對(duì)象,配置對(duì)象,并且管理這些對(duì)象的整個(gè)生命周期。
優(yōu)點(diǎn):把應(yīng)用的代碼量降到最低。容器測(cè)試,最小的代價(jià)和最小的侵入性使松散耦合得以實(shí)現(xiàn)。IOC容器支持加載服務(wù)時(shí)的餓漢式初始化和懶加載。
DI依賴注入是IOC的一個(gè)方面,是個(gè)通常的概念,它有多種解釋。這概念是說(shuō)你不用床架對(duì)象,而只需要描述它如何被創(chuàng)建。你不在代碼里直接組裝你的組件和服務(wù),但是要在配置文件里描述組件需要哪些服務(wù),之后一個(gè)IOC容器輔助把他們組裝起來(lái)。
IOC的注入方式:1.構(gòu)造器依賴注入;2.Setter方法注入。
六.如何給spring容器提供配置元數(shù)據(jù)
XML配置文件
基于注解的配置
基于Java的配置@Configuration,@Bean
七.bean標(biāo)簽中的屬性:
id
name
class
init-method:Bean實(shí)例化后會(huì)立刻調(diào)用的方法
destory-method:Bean從容器移除和銷(xiāo)毀前,會(huì)調(diào)用的方法
factory-method:運(yùn)行我們調(diào)用一個(gè)指定的靜態(tài)方法,從而代替構(gòu)造方法來(lái)創(chuàng)建一個(gè)類(lèi)的實(shí)例。
scope:Bean的作用域,包括singleton(默認(rèn)),prototype(每次調(diào)用都創(chuàng)建一個(gè)實(shí)例),request,session,global-session(注意spring中的單例bean不是線程安全的)
autowired:自動(dòng)裝配byName,byType,constructor,autodetect(首先闡釋使用constructor自動(dòng)裝配,如果沒(méi)有發(fā)現(xiàn)與構(gòu)造器相匹配的Bean時(shí),Spring將嘗試使用byType自動(dòng)裝配)
八.beans標(biāo)簽中相關(guān)屬性
default-init-method
default-destory-method
default-autowire:默認(rèn)為none,應(yīng)用于Spring配置文件中的所有Bean,注意這里不是指Spring應(yīng)用上下文,因?yàn)槟憧梢远x多個(gè)配置文件。
Java學(xué)習(xí)視頻入門(mén)到精通
最新java視頻教程免費(fèi)下載(從入門(mén)到精通):http://www.bjpowernode.com/video.html
零基礎(chǔ)java自學(xué)教程:http://www.bjpowernode.com/tutorial_java_se/
以上就是長(zhǎng)沙中公優(yōu)就業(yè)java學(xué)院小編針對(duì)“如何學(xué)習(xí)Java開(kāi)源框架Spring的知識(shí)點(diǎn)”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如果對(duì)于學(xué)習(xí)Java的學(xué)習(xí)計(jì)劃,怎么學(xué)才有效率,或者學(xué)完如果找工作的問(wèn)題,請(qǐng)?jiān)诰€咨詢,有專(zhuān)業(yè)老師隨時(shí)為你服務(wù)。
相關(guān)推薦
零基礎(chǔ)學(xué)Java編程,這些內(nèi)容你一定要知道
學(xué)習(xí)Java編程了解一些免費(fèi)Java開(kāi)發(fā)工具
初學(xué)者學(xué)Java編程真的很難?
新手自學(xué)Java編程需要多長(zhǎng)時(shí)間呢
學(xué)習(xí)Java編程可以做什么