Spring源碼系列:Spring的版本變動

Spring是一個開放源代碼的設計層面框架,它解決的是業務邏輯層和其餘各層的鬆耦合問題,所以它將面向接口的編程思想貫穿整個系統應用。Spring是於2003 年興起的一個輕量級的Java 開發框架,由Rod Johnson建立。簡單來講,Spring是一個分層的JavaSE/EEfull-stack(一站式) 輕量級開源框架【來自百度百科】。html

目前Spring已經發展到5.0.4 版本了,今天我們就來聊一聊spring各個版本都提供了哪些新的特性。web

spring 2.x

spring的2.x包括下面兩個:spring

  • 2.0.0-2.0.8
  • 2.5.0-2.5.6 此時的spring仍是很年輕的,所包含的模塊也不是不少。以下圖:

2.0 新特性數據庫

  • XML Schema的新XML配置語法的出現編程

  • 新的Bean的做用域數組

    之前的Spring版本對IoC容器級支持兩個不一樣的bean做用域(singleton和prototype)。Spring 2.0在這方面進行了改進,不只根據部署Spring的環境(例如Web環境中的請求和會話做用域Bean)提供了一些額外的做用域,還提供了「掛鉤」),使Spring用戶能夠建立本身的範圍。 應該注意的是,雖然singleton和prototype做用域bean的底層(和內部)實現已經改變,可是所述改變對於最終用戶是徹底透明的...不須要改變現有的配置,而且不存在現有的配置將會中斷。 緩存

  • 可擴展的XML服務器

  • 支持@AspectJ方面網絡

  • 更加簡單XML配置(aop&事務)併發

  • 異步JMS

  • Spring MVC的表單標籤庫

  • Java 5(Tiger)支持

  • Spring 2.0如今支持用Java之外的語言編寫的bean,目前支持的動態語言是JRuby,Groovy和BeanShell

  • 提供了一個關於任務調度的抽象概念

  • 引入了對各類註釋的支持,用於配置目的,例如@ Transactional, @Required和@PersistenceContext / @PersistenceUnit。

2.5 新特性

  • 在Spring 2.0在整個框架中對Java 5的深刻支持以後,Spring 2.5引入了對Java 6的專門支持。

  • @Autowired結合對JSR-250註釋@Resource,@ PostConstruct和@PreDestroy的支持 。

  • 在類路徑中自動檢測組件

    Spring 2.5引入了支持組件掃描:在類路徑中自動檢測帶註釋的組件。典型地,這樣的組件類將與定型如進行註釋@Component, @Repository,@Service, @Controller。根據應用程序的上下文配置,這些組件類將被自動檢測並轉換爲Spring bean定義,而不須要爲每一個這樣的bean顯式配置。

  • 支持bean名稱切入點元素

    Spring 2.5引入了對bean(...) pointcut元素的支持,根據Spring定義的bean名稱匹配特定的命名bean

  • 支持AspectJ加載時織入

  • Spring 2.5顯着擴展了SimpleJdbcTemplate的功能, 並引入了 SimpleJdbcCall和SimpleJdbcInsert 操做對象。

  • 基於註釋的控制器。

    Spring 2.5爲MVC控制器引入了一個基於註釋的編程模型,使用@ RequestMapping,@ RequestParam,@ ModelAttribute等註解。這個註解支持可用於Servlet MVC和Portlet MVC。以這種風格實現的控制器沒必要擴展特定的基類或實現特定的接口。此外,他們一般不直接依賴於Servlet或Portlet API,儘管他們能夠很容易地訪問Servlet或Portlet設施。

  • 引入了Spring TestContext框架

Spring 3.x

spring 3.x包括如下幾個系列:

  • 3.0.0-3.0.7
  • 3.1.0-3.1.4
  • 3.2.0-3.2.18

在2.x的模塊上頁拓展了新的模塊

3.0.x 新特性

  • 針對Java 5更新的核心API
  • spring 表達語言
  • 基於Java的bean元數據和在組件中定義bean元數據
  • 通用型轉換系統和現場格式化系統
  • 全面的REST支持
  • 聲明式模型驗證
  • 早期支持Java EE 6
  • 支持嵌入式數據庫

3.1.x 新特性

  • 緩存抽象

  • Bean定義配置文件

  • 環境抽象

  • PropertySource抽象

  • Spring的XML名稱空間的代碼等價物

  • 支持Hibernate 4.x

  • TestContext框架支持@Configuration類和bean定義配置文件

  • 更簡潔的構造函數注入的命名空間

  • 支持針對非標準JavaBeans設置器的注入

  • 支持Servlet 3基於代碼的Servlet Container配置

  • 支持Servlet 3 MultipartResolver

  • 沒有persistence.xml的JPA EntityManagerFactory引導

  • 用於註釋的控制器處理的新的基於HandlerMethod的支持類

  • Flash屬性和RedirectAttributes(請求重定向參數的支持)

  • "consumes" and "produces" conditions in @RequestMapping

    改進了對經過'Content-Type'標題指定方法消耗的媒體類型以及經過標題指定的可生成類型的支持'Accept'

  • URI模板變量加強

  • @Valid on @RequestBody控制器方法參數

  • 控制器方法參數上的@RequestPart註釋

  • UriComponentsBuilder和UriComponents

3.2.x 新特性

  • 支持基於Servlet 3的異步請求處理
  • Spring MVC測試框架
  • @ControllerAdvice註解
  • 基於代碼的Servlet 3+容器初始化的抽象基類
  • ResponseEntityExceptionHandler類引入
  • 在RestTemplate和中的 @RequestBody參數支持泛型類型
  • JackJSON 2和相關的改進
  • @RequestBody改進
  • HTTP PATCH方法
  • 使用註釋點和bean定義方法的元註釋
  • 初步支持JCache 0.5
  • 全球日期和時間格式
  • 整個框架的併發優化
  • 新的基於Gradle的構建和移動到GitHub
  • 精煉的Java SE 7 / OpenJDK 7支持

Spring 4.x

spring 4包括如下系列版本:

  • 4.0.0-4.0.9
  • 4.1.0-4.1.9
  • 4.2.0-4.2.9
  • 4.3.0-4.3.13

spring 4.0.x 新特性

  • 刪除棄用的軟件包和方法

    可選的第三方依賴已被提高到2010/2011最低(即Spring 4一般只支持2010年底或以後發佈的版本):特別是,Hibernate 3.6+,EhCache 2.1+,Quartz 1.8+,Groovy 1.8+和Joda-Time 2.0+。做爲規則的一個例外,Spring 4須要最近的Hibernate Validator 4.3+,而且對Jackson的支持已經集中在2.0+以上(當前Spring 3.2已經保留了對Jackson 1.8 / 1.9的支持;如今只是棄用了造成)。

  • Java 8(以及6和7)

    可使用Spring的回調接口使用 lambda表達式和方法引用

  • Java EE 6和7

    Java EE 6或更高版本如今被認爲是Spring Framework 4的基準,JPA 2.0和Servlet 3.0規範特別相關。爲了與Google App Engine和較早的應用程序服務器保持兼容,能夠將Spring 4應用程序部署到Servlet 2.5環境中。不過,強烈建議使用Servlet 3.0+,這是Spring開發環境中測試設置的測試和模擬包中的先決條件。

  • Groovy Bean定義DSL

  • 核心容器改進

    • Spring如今將泛型類型做爲注入Beans時限定符的形式 。例如,若是您正在使用Spring Data Repository,則如今能夠輕鬆注入一個特定的實現: @Autowired Repository customerRepository。
    • 若是您使用Spring的元註釋支持,如今能夠開發自定義註釋來 顯示源註釋中的特定屬性。
    • bean如今能夠在自動裝配到列表和數組中時進行排序。不管是標註和接口的支持。 @OrderOrdered
    • 該@Lazy註釋如今能夠在注入點使用,以及對@Bean 定義。
    • 該@Description批註已經推出了使用基於Java的配置開發。
    • 已經經過註釋添加 了有條件地過濾bean的通用模型@Conditional。這與@Profile支持相似,但容許以編程方式開發用戶定義的策略。
    • 基於CGLIB的代理類再也不須要默認的構造函數。支持經過提供objenesis 其從新打包庫在線,並將其做爲Spring框架的一部分。有了這個策略,全部的構造函數都再也不被調用代理實例。
    • 整個框架如今都有管理時區的支持,例如LocaleContext。
  • web 模塊支持

    • 能夠在Spring MVC應用程序中使用新的@RestController註釋,不須要添加@ResponseBody到每一個 @RequestMapping方法中。
    • 該AsyncRestTemplate已添加,容許異步非阻塞支持開發REST客戶端時。
    • 開發Spring MVC應用程序時提供了全面的時區支持。
  • 測試改進

  • WebSocket,SockJS和STOMP消息傳遞

spring 4.1.x 新特性

  • JMS改進
  • 緩存改進
  • 網絡改進
  • WebSocket消息傳遞改進
  • 測試改進

spring 4.2.x 新特性

Spring 4 官方文檔

  • 核心容器改進
  • 數據訪問改進

spring 4.3.x 新特性

  • 支持新的包和服務
  • 相關改進

目前尚未用過spring5,總會有憧憬。當咱們使用spring愈來愈簡單時,危機也在一步步逼近;看到表象,進一步,再進一步!

相關文章
相關標籤/搜索