Spring是1個(gè)開源框架,Spring是于2003 年興起的1個(gè)輕量級的Java 開發(fā)框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中論述的部份理念和原型衍生而來。它是為了解決企業(yè)利用開發(fā)的復(fù)雜性而創(chuàng)建的。 spring為企業(yè)利用的開發(fā)提供了1個(gè)輕量級的解決方案。該解決方案包括:基于依賴注入的核心機(jī)制、基于AOP的聲明式事務(wù)管理、與多種持久層技術(shù)的整合,和優(yōu)秀的web
mvc框架等。
1 spring構(gòu)架的組成結(jié)構(gòu)圖:
Core Container(核心容器)包括有Core、Beans、Context和Expression Language模塊。
Core和Beans模塊:框架的基礎(chǔ)部份,提供IoC(反轉(zhuǎn)控制)和依賴注入特性。這里的基礎(chǔ)概念是BeanFactory,它提供對Factory模式的經(jīng)典實(shí)現(xiàn)來消除對程序性單例模式的需要,并真實(shí)的允許你從程序邏輯中分離出依賴關(guān)系和配置。
Context模塊:構(gòu)建于Core和Beans模塊基礎(chǔ)之上,提供了1種類似于JNDI注冊器的框架勢的對象訪問方法。Context模塊繼承了Beans的特性,然后添加了對國際化(例如資源綁定)、事件傳播、資源加載和對Context的透明創(chuàng)建的支持。Context模塊同時(shí)也支持J2EE的1些特性,例如EJB、JMX和基礎(chǔ)的遠(yuǎn)程處理。ApplicationContext接口是Context模塊的關(guān)鍵。
Expression Language模塊:Expression Language模塊提供了1個(gè)強(qiáng)大的表達(dá)式語言用于在運(yùn)行時(shí)查詢和操縱對象。它是JSP2.1規(guī)范中定義的unifed expression language的1個(gè)擴(kuò)大。該語言支持設(shè)置/獲得屬性的值、屬性的分配、方法的調(diào)用、訪問數(shù)組上下文(accessiong the context of arrays)、容器和索引器、邏輯和算術(shù)運(yùn)算符、命名變量和從Spring的IoC容器中根據(jù)名稱檢索對象。它也支持list投影、選擇和1般的list聚合。
JDBC模塊:該模塊提供了1個(gè)JDBC抽象層,它可以消除冗雜的JDBC編碼和解析數(shù)據(jù)庫廠商獨(dú)有的毛病代碼。
ORM模塊:該模塊為流行的對象-關(guān)系映照API――JPA、JDO、Hibernate、iBatis等提供了1個(gè)交互層。利用ORM封裝包,可以混合使用所有Spring提供的特性進(jìn)行O/R映照。如前邊提到的簡單聲明性事物管理。
2使用Spring管理Bean
spring核心容器的理論:spring核心容器就是1個(gè)超級大工廠,所有的對象(包括數(shù)據(jù)源等基礎(chǔ)性資源)都會被當(dāng)做spring核心容器管理的對象----spring把容器中的1切對象統(tǒng)稱為Bean。只要是1個(gè)java類,spring就能夠管理該java類,并將它當(dāng)做Bean處理。<spring容器怎樣知道管理哪些Bean,XML配置文件(也可用注解),spring使用xml配置文件來管理容器中bean,spring對xml配置文件的文件名沒有任何要求,可以隨便定義。
上面配置文件中還包括1個(gè)<property>子元素,<property>子元素,<property>子元素通經(jīng)常使用于作為<bean>元素的子元素,它驅(qū)動spring在底層以反射履行1次setter方法。其中<property>的name屬性值決定履行那個(gè)setter方法,而value或ref決定履行setter方法的傳入?yún)?shù)。spring框架只要看到<property>子元素,就會在底層以反射方式履行1次setter。
1 如果傳入?yún)?shù)是基本類型及其包裝類、string等類型,則使用value屬性指定傳入?yún)?shù)。
2 如果以容器中其他bean作為傳入?yún)?shù),則使用ref屬性指定傳入?yún)?shù)。
3 spring的優(yōu)點(diǎn)
1 低侵入式設(shè)計(jì),代碼的污染極地。
2 獨(dú)立于各種利用服務(wù)器,基于spring框架的利用。
3 它的IoC容器下降了,業(yè)務(wù)對象體替換的復(fù)雜性,提高了組件之間的解耦。
4 spirng的AOP支持允許將1些通用任務(wù)如安全、事務(wù)、日志等進(jìn)行集中式處理,從而提高了更好的復(fù)用。
5 spring的ORM到DAO提供了與第3方持久層框架的良好整合,并簡化了底層的數(shù)據(jù)庫訪問。
6 spring的高度開放性,其實(shí)不強(qiáng)迫利用完全依賴于spring,開發(fā)者可自由選用spring框架的部份或全部。
spring就是1個(gè)容器,可以管理任何的java類
上一篇 自己封裝UIPickerView加一個(gè)時(shí)間范圍
下一篇 [ XXX handleSegmentControl:]: unrecognized selector sent to instance 0x7fe2de49