javascript
Spring版本特性:Spring各个版本引入了哪些新特性?
?
Spring是Rod Johnson在2004年推出的一個輕量級框架。對Java EE 系統框架臃腫、低效、脫離現實的種種現狀提出了質疑,并積極尋求探索革新之道。
spring 1.x時代
在這個時代,spring的IOC容器與aop編程都是通過xml文件實現的。顯然,當項目不斷的擴大時,xml配置文件會越來越多,xml配置文件的管理會成為一件麻煩的工作。有的朋友就奇怪了,注解也不難啊,咋那時沒有推出注解功能呢?
這就得翻翻歷史看看了,2004年的時候,jdk1.5都還沒推出呢,我們知道注解是jdk1.5開始支持的。也就是當時jdk都還沒支持注解呢,所以那時spring不支持注解也就不奇怪了。
spring 2.xml
隨著jDK1.5帶來的注解支持,Spring2.x可以使用注解對Bean進行申明和注入,大大的減少了xml配置文件,同時也大大簡化了項目的開發。
.Spring3.x到Spring4.x
從Spring3.x開始提供了Java配置方式,使用Java配置方式可以更好的理解你配置的Bean,現在我們就處于這個時代,并且Spring4.x和Spring boot都推薦使用Java配置的方式。
那么我們開發中,到底使用xml還是注解還是Java配置方式呢?
個人覺得:
應用的基本配置可以用xml,比如:數據源、資源文件等
業務開發使用注解:如:service的bean
Java配置方式也是不錯的方式,可以替代xml做基本的配置,但應該把靜態資源數據抽取到資源文件里去,避免修改配置時需要修改源碼。
?
Spring各個版本新特性
Spring3.1新特性
- 1.添加了引入環境profile功能
- 2.添加了@enable注解,使用特定功能
- 3.添加了對聲明式緩存的支持,能夠使用簡單的注解聲明緩存邊界和規則
- 4.添加的用于構造器注入的c命名空間,類似與Spring2的p命名空間,用于對應屬性注入
- 5.開始支持Servlet3.0,包括基于java配置中生命Servlet和Filter,不再只僅僅借助web.xml
- 6.改善對于JPA的支持,讓JPA能在Spring中完整配置JPA,不必再使用persistence.xml文件
- 7.自動綁定路徑變量到模型屬性中
- 8.提供了@RequestMappingProduces和consumes屬性,用于匹配請求中的Accept和Content-Type頭部信息
- 9.提供了@RequestPart注解,用于將Multipart請求中的而某些部分綁定到處理器的方法參數中
- 10.持Flash屬性,在redirect請求后依然能夠存活的屬性,flash屬性的RedirectAttribute類型
- 11.為支持原生的EntityManager,Spring的JpaTemplate和JpaDaoSupport類已被廢棄了來支持JPA 2.0,并在spring4中移除了
Spring3.2版本
- 1.@Autowired.@Value和@Bean注解能夠作為元注解,用于創建自定義的注入和bean聲明注解
- 2.@DateTimeFormat注解不再依賴JodaTime.如果提供了JodaTime,就會使用它,否則的話,會使用SimpleDateFormat;
- 3.Spring的聲明式緩存提供了對JCache0.5的支持
- 4.支持定義全局的格式來解析和渲染日期和時間
- 5.在集成測試中,能夠配置和加載WebApplicationContext
- 6.在集成測試中,能夠針對request和session作用域的bean進行測試
Spring4.0版本
- 1.Spring提供了對WebSocket編程的支持,包括支持JSR-356--Java API for WebSocket
- 2.鑒于WebSocket僅僅提供了一種低層次的API,急需高層次的抽象,因此Spring4.0在WebSocket之上提供了一個高層次的面向消息的編程模型,
- 該模型基于SockJS,并且包含了對STOMP協議的支持
- 3.新的消息模塊,很多的類型來源于Spring Integration項目。這個消息模塊支持Spring的SockJS/STOMP功能,同時提供了基于模板的方式發布消息
- 4.Spring是第一批支持Java8特性的Java框架,比如它所支持的lambda表達式,別的暫且不說,這首先能夠讓使用特定的毀掉接口更加簡潔,代碼更加易讀
- 5.與Java8 同時得到支持的是JSR-310--Date與Time API,在處理時間和日期時,他為開發者提供了java.util.Date或java.util.Calendar更豐富的API
- 6.為Groovy開發的應用程序提供了更加順暢的編程體驗,尤其是支持非常便利地完全采用Groovy開發Spring應用程序。隨這些一起提供的是來自于Grails
- 的BeanBuilder,借助它能夠通過Groovy配置Spring應用
- 7.添加了條件化創建bean的功能,在這里只有開發人員定義的條件滿足時,才會創建所聲明的bean
- 8.Spring4.0包含了Spring RestTemplate的一個新的異步實現,它會立即返回并且允許在操作完成后執行回調
- 9.添加了對多項JEE規范的支持,包括JMS2.0.JTA1.2.JPA2.1和Bean Validation1.1
Spring 5.0 基于 Java 8
這么說的意思是,Spring 的源代碼已經是以 Java 8 的語法來重新寫過了!這可是相當大的變更,可以說是核心層面的重寫。你可以在 Spring 的源碼中看到很多:
這樣相比 Spring 4.x 更能充分利用 Java 8 的潛力。
日志記錄
Spring 5.0 使用自己的?spring-jcl模塊來記錄日志,這個模塊會自動識別并使用現有的日志框架。
Bean 掃描
當項目非常大的時候,Spring 的掃描過程會導致很長的啟動時間。在這個版本開始,你可以使用?META-INF/spring.components?文件來直接指定要注冊哪些類。這種方式對于小的項目(比如說少于 200 個 bean)來說可能改善不是很明顯,但對大項目來說幫助非常大。
反應式編程模型
Spring 5.0 新增了一個名為 Spring WebFlux 的反應式(Reactive)模型,與現有的 Spring MVC 并存,而它的并發承載能力可以說是高了數倍不止。注意 Spring WebFlux 和 Servlet 是不兼容的。
反應式編程模型屬于比較新的東西,隨著時間推移,Spring 的其他項目(如 Spring Data、Spring Security、Spring Integration 等)也會陸續加入對反應式編程模型的支持。
但是在數據庫操作方面,反應式編程模型還不夠成熟,因為 JDBC 規格本身仍然是阻塞式的。
單元測試
因為 JUnit 5 已經適配 Java 8,所以 Spring 5 也對 JUnit 5 做出了相應的適配,對測試進行啟用和禁用更加方便,并發測試也更容易。
依賴庫
Spring 5.0 的一些依賴關系也做了更新:
-
Jackson 2.6+
-
EhCache 2.10+ / 3.0 GA
-
Hibernate 5.0+
-
JDBC 4.0+
-
XmlUnit 2.x+
-
OkHttp 3.x+
-
Netty 4.1+
?
總結
以上是生活随笔為你收集整理的Spring版本特性:Spring各个版本引入了哪些新特性?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 特性总览:核心特性、数据存储、Web技术
- 下一篇: gradle idea java ssm