翻譯自Spring官方文檔 4.1.2版本
一荣德、Spring Framework構(gòu)成##
Spring Framework根據(jù)功能不同大約可以分為20個模塊澳窑。這些模塊又可以分組為:核心容器(Core Container
), 數(shù)據(jù)訪問/集成(Data Access/Integration
),網(wǎng)絡(luò)(Web
), 面向切面編程(Aspect Oriented Programming
), 工具(Instrumentation
), 消息(Messaging
), and 測試(Test
)。
1.1 核心容器###
核心容器包含:spring-core
, spring-beans
, spring-context
, 和spring-expression
(Spring Expression Language)模塊。
spring-core
和spring-beans
模塊提供框架的基本組成部分,包括IoC 和Dependency Injection特性。BeanFactory是一個復(fù)雜的工廠模式的實現(xiàn)螟炫。它不需要你手動編碼來實現(xiàn)單例并且允許你在實際的編程中將配置和對象間的依賴解耦。
spring-context
模塊構(gòu)建在spring-core
和spring-beans
模塊的基礎(chǔ)上:通過框架在存取對象的方式上是和JNDI注冊類似的艺晴。Context模塊繼承Beans模塊的特點并添加國際化支持(例如:resource bundles)昼钻、事件傳播、資源加載封寞、上下文的透明創(chuàng)建然评,例如:一個Servlet容器。Context模塊同樣也支持Java EE特性例如EJB,狈究、JMX和基本的遠程調(diào)用碗淌。ApplicationContext
接口是Context模塊的中心點。
spring-expression
模塊提供強大的表達式語言在運行時用來查詢和操作對象圖抖锥。它是在JSP 2.1規(guī)范中指定的unified expression language (unified EL)的擴展亿眠。這個語言支持設(shè)置和獲取屬性值,屬性賦值磅废,方法調(diào)用纳像,訪問數(shù)組、集合拯勉、索引竟趾,邏輯和算數(shù)運算,命名變量宫峦,根據(jù)名稱從Spring的IoC容器取回對象潭兽。它還支持列表映射和選取就像普通的列表集合一樣。
1.2 AOP和工具###
spring-aop
模塊提供一個AOP 行業(yè)兼容的面向切面的編程實現(xiàn)允許你定義以下幾個操作:例如定義方法攔截器斗遏、定義切點來清晰的分離功能不同的代碼。通過使用源碼級元數(shù)據(jù)的功能鞋邑,你可以將行為信息融入在你的代碼(記錄日志這個最容易想到)诵次。
獨立的spring-aspects
模塊集成了AspectJ。
spring-instrument
模塊提供了類工具支持和類加載器實現(xiàn)枚碗,被用于一些應(yīng)用程序服務(wù)器中逾一。
1.3 消息###
Spring Framework 4包括了一個spring-messaging
模塊,它具有一些主要的抽象例如:Message
肮雨、MessageChannel
遵堵、MessageHandler
和其他一些抽象一起充當(dāng)基于消息的應(yīng)用程序的基礎(chǔ)。這個模塊也包含了一組注解來映射消息到方法,類似于Spring MVC基于注解的編程方式陌宿。
1.4 數(shù)據(jù)訪問/集成###
數(shù)據(jù)訪問/集成層包括JDBC, ORM, OXM, JMS, 和Transaction等模塊锡足。
spring-jdbc
模塊提供一個JDBC抽象層,消除了冗長的JDBC編碼并且解析了數(shù)據(jù)庫廠商特定的錯誤代碼壳坪。
對于那些實現(xiàn)了特殊接口和你的POJO類舶得,spring-tx
模塊提供了編程式和聲明式事務(wù)管理。
spring-orm
模塊為流行的對象關(guān)系映射APIs提供了集成爽蝴,包括:JPA, JDO, 和Hibernate沐批。如果使用spring-orm
模塊你可以使用這些O/R-mapping框架同時結(jié)合使用Spring提供的所有其他特性。例如:之前說到的聲明式事務(wù)管理特性蝎亚。
spring-oxm
模塊提供了一個抽象層來支持Object/XML mapping的實現(xiàn)九孩,例如:JAXB, Castor, XMLBeans, JiBX 和XStream。
spring-jms
模塊包含了生產(chǎn)和消費信息的特性发框。從Spring Framework 4.1以后躺彬,它提供了與spring-messaging
模塊集成。
1.5 網(wǎng)絡(luò)###
網(wǎng)絡(luò)層包括spring-web
, spring-webmvc
, spring-websocket
,和spring-webmvc-portlet
模塊缤底。
spring-web
模塊提供了基本的面向網(wǎng)絡(luò)的集成特性顾患,例如:文件上傳功能、初始化IoC容器可以使用Servlet監(jiān)聽器和一個面向網(wǎng)絡(luò)的應(yīng)用程序上下文个唧。它也包含了Spring遠程調(diào)用支持的網(wǎng)絡(luò)相關(guān)的部分江解。
spring-webmvc
模塊(也被叫做Web-Servlet模塊)包含了為web應(yīng)用程序設(shè)計的Spring的model-view-controller (MVC)實現(xiàn)。Spring的MVC框架在域模型(domain model)代碼和web表單之間提供了一個清晰的劃分徙歼,并且與Spring Framework的所有其他特性集成犁河。
spring-webmvc-portlet
模塊(也被叫做Web-Portlet模塊)提供了MVC實現(xiàn)用來在門戶環(huán)境(Portlet environment )中使用,借鑒了spring-webmvc
的功能魄梯。
1.6 測試###
spring-test
模塊通過JUnit 或者 TestNG為Spring組件進行單元測試和集成測試提供了支持桨螺。它提供了ApplicationContexts
和那些上下文緩存的一致性加載。它也提供了模擬對象(mock objects)使你可以去測試你的代碼在隔離的狀態(tài)酿秸。
二灭翔、典型的完全成熟的Spring web application##
Spring的聲明式事務(wù)管理特性使web應(yīng)用程序完全是事務(wù)性的,就像你使用EJB管理事務(wù)那樣辣苏。你的所有自定義業(yè)務(wù)邏輯可以被實現(xiàn)為簡單的POJO(其實我對POJO還挺模糊)并且被Spring的 IoC 容器管理肝箱。額外的服務(wù)包括發(fā)送郵件并且驗證是獨立與web層的,這樣允許你選擇在哪里執(zhí)行驗證規(guī)則稀蟋。Spring的ORM支持已經(jīng)與JPA, Hibernate 和 JDO集成煌张;例如,當(dāng)使用Hibernate時退客,你可以繼續(xù)使用你已有的映射文件和標準的Hibernate SessionFactory配置骏融。表單控制器(Form controller)通過域模型(domain model)無縫的與web層集成链嘀,不再需要
ActionForms
或者其他類來將HTTP參數(shù)轉(zhuǎn)換成你域模型里的值。