Spring是分層的Java SE/EE應用一站式的輕量開源框架,以
反轉控制(Inverse of Control,
IoC)、
面向切面編程(Aspect Oriented Programming,
AOP)爲內核,提供了展示層Spring MVC、持久層Spring JDBC以及業務層事務管理等衆多的企業級應用技術。此外。Spring整合了衆多著名第三方框架和類庫。
一、發展史--Rod Johnson
- Spring的框架首次在2003年6月的Apache 2.0的使用許可中公佈;
- 第一個具備里程碑意義的版本號是2004年3月公佈的1.0;
- 2004年9月和2005年3月前後又有重要的版本號面世。
- Spring Framework 首個版本號是在 2004 年公佈的,其後包括幾個重大版本號改進。Spring 2.0 提供了 XML 命名空間和 AspectJ 支持;Spring 2.5 包括註解驅動的配置;Spring 3.0 引入增強的 Java 5+ 基礎和 @configuration 模型。
- 而 Spring 4.0 是最新的主要版本號,這是首個全然支持 Java 8 特性的框架,該版本號最低要求 Java SE 6 的支持。
刪除了廢棄的方法和類。web
二、長處
- 方便解耦,簡化開發;
- AOP編程的支持;
- 聲明式事物的支持;
- 方便程序測試。
- 方便集成各類優秀框架。
- 減小Java EE API使用難度。
- 源代碼設計精妙、結構清晰,Java技術的最佳時間範例。
三、Spring 4.0 體系結構圖:
可對照舊體系結構,例如如下:
四、Spring 4.0的新特性:
- Java 8諸多特性的支持;
- 使用Groovy DSL定義外部的Bean配置,這相似於XML Bean聲明。但是語法更爲簡潔。使用Groovy還能夠在啓動代碼中直接嵌入Bean的聲明。
- 核心容器功能的改進(支持泛型依賴注入;使用meta-annoation方式定義Annotation時, 該Annotation能夠訪問源Annotation的部分屬性,以更加方便的定製本身想要的Annotation;Bean依賴注入到Map和List。Array中, 即提供了一種方式獲取到某個類型的所有Bean,當注入到Map中時, Key爲Bean的名字,value爲Bean實例。
)spring
- Web開發改進(添加了@RestController annotation、AsyncRestTemplate類;Spring4.0基於Servlet3.0+版本號開發;爲Spring MVC應用添加了Timezone的支持,可以在RequestContext獲取,設置TimeZone信息。Spring還提供Datetime的轉換功能;提供了 WebSocket, SockJS, and STOMP Messaging的支持;支持STOMP Message協議)
- 測試框架改進 (差點兒所有spring-test模塊下的annotation都可以作元annoation, 開發人員就可以更方便得定製本身的annotation,以加強代碼表現力和下降多個Test之間的反覆代碼。添加了一種更靈活的ActiveProfiles的決定方式;加入了SocketUtils類幫忙掃描本地機器上的可用Socketport;org.springframework.mock.web包下的Mock類都與Servlet 3.0兼容了;刪除了所有廢棄的方法和類)
- 參考:http://ningandjiao.iteye.com/blog/1993481
五、結構闡述
IoC
將類和類之間的依賴從代碼中脫離,用配置的方式進行依賴關係描寫敘述,由IOC容器負責依賴類之間的建立、拼接、管理、獲取等。