Spring原始碼系列:Spring的版本變更

glmapper發表於2018-01-31

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

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

spring 2.x

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

  • 2.0.0-2.0.8
  • 2.5.0-2.5.6 此時的spring還是很年輕的,所包含的模組也不是很多。如下圖:

Spring原始碼系列:Spring的版本變更

2.0 新特性

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

  • 新的Bean的作用域

    以前的Spring版本對IoC容器級支援兩個不同的bean作用域(singleton和prototype)。Spring 2.0在這方面進行了改進,不僅根據部署Spring的環境(例如Web環境中的請求和會話作用域Bean)提供了一些額外的作用域,還提供了“掛鉤”),使Spring使用者可以建立自己的範圍。 應該注意的是,雖然singleton和prototype作用域bean的底層(和內部)實現已經改變,但是所述改變對於終端使用者是完全透明的...不需要改變現有的配置,並且不存在現有的配置將會中斷。

    Spring原始碼系列:Spring的版本變更

  • 可擴充套件的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的模組上頁擴充了新的模組

Spring原始碼系列:Spring的版本變更

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原始碼系列:Spring的版本變更
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越來越簡單時,危機也在一步步逼近;看到表象,進一步,再進一步!

相關文章