##3.spring 4.0的新功能和改善 spring框架在2014年收發;到目前爲止有這幾個主要版本:spring2.0提供了xml命名空間和AspectJ的支持;spring2.5實現了註解驅動配置;spring3.0在代碼裏引入了強大的java5.0+(1.5,1.6,1.7)的基礎;還提供了基於java的@Configuration模式; 4.0版本是spring最新的主要發佈版,首次徹底支持java8的特性;你仍是能夠用舊版原本支持spring的,但要在jdk1.6以上;咱們還提供了能夠刪除許多過期類和方法的主要發佈版本選項; ###3.1 讓獲取起步經驗更容易 新的 spring 網站提供了一系列的"getting Started"手冊幫助你學習spring;你能夠從第一章啓動spring部分得到更多資料.新網站還對這些在spring框架下的新項目提供了複雜的文檔介紹; 若是你是maven用戶,那麼你可能對bill of materials部分感興趣,每一個發佈版都會有;html
許多過期的包,類,方法已經從4.0版本里刪掉了. 若是你要更新你的spring版本,你要保證你能修復全部由咱們定義的過期APIS引發的過期調用問題; 你能夠從 API Differences Report獲得詳細的變動列表 請注意,全部的第三方依賴都必須是2010/2011年以上版本(spring4.0只支持2010版本或更新版本); 尤爲,hibernate3.6+,Ehcache 2.1+,Quartz 1.8+,Groovy 1.8+,Joda-Time 2.0+.這裏有個例外,spring 4.0要求bibernate驗證器要爲4.3版本,如今對Jackson的支持要求爲2.0+版本;(spring3.2支持1.8/1.9版本,然如今已過期) ###3.3 java8(也有 6和7) spring 4.0 提供了對java8功能的一些支持.你能夠再spring回調接口中使用lambda表達式和方法表達式.這裏對java.time包((JSR-310)[http://jcp.org/en/jsr/detail?id=310]) 有一流的支持,還把幾種已存在的註解改裝爲@Repeatable註解同樣.你還可使用java8的參數名字發現機制(基於參數編譯器標誌)做爲替代項使你在編譯期間獲取調試信息; 保持對java6,7的兼容,但jdk6要求是 JDK 6 update 18;然仍是建議要8; ###3.4 java EE 6和7 java EE 6是spring框架的最低版,主要是JPA2.0和Servlet3.0規格和它部分關聯.爲了保持與Google App Engine和舊版本應用容器的兼容性,你能夠在Servlet2.5的版本上運行spring4.0的項目.然Servlet 3.0+仍被強烈推薦,他是spring test模塊和模仿測試包在開發環境中的先決條件; suggest:若是你使用WebSphere 7,那麼你必須安裝JPA2.0的功能包.在weblogic 10.3.4或者更高的版本上,JPA2.0已經安裝了.因此這兩中版本的服務容器都兼容spring4.0的部署環境. 再往前看,spring 4.0支持java EE7的的應用規則:特別是JMS2.0,JTA1.2,Bean Validation 1.1,JSR-236 Concurrency Utilities.一般,它支持各類規範的具體應用.然而,部署在Java EE 7 的服務器上也能運行良好; 只有SPring4.0++才支持hibernate 4.3+和JPA2.0+.這一樣適用於Hiberante Validator 5.0 ,Bean Validation 1.1.(這二者沒有被Spring 3.2正式支持) ##Groovy Bean Definition DSL(Groovy Bean的定義語句 DSL) 可使用Goovy DSL來定義spring4.0的配置文件.她可使用比xml更簡潔的語法.它可使你啓動代碼變得更容易.例如:java
def reader=new GroovyBeanDefinitionReader(myApplicationContext) reader.beans{ dataSource(BasicDataSource){ driverClassName="org.hsqldb.jdbcDriver" url="jdbc:hsqldb:mem:grailsDB" username="sd" password="" settting=[mynew:"setting"] } sessionFactory(SessionFactory){ dataSource=dataSource } myService(MyService){ nestedBean={AnotherBean bean-> dataSource=dataSource } } }
有如下改善:web
public class Conditoner implement condition{ @Override public boolean matches(ConditionContext context,AnnotatedTypeMedtadata metadata){ return .... ; } }
簡單使用, 和profile註解效果類似spring
###3.7 web優化 要使用Servlet3.0的包,2.5雖然也能夠.但若是你要使用Spring Mvc Test 框架,就必須用Servlet3.0; 除了下文會提到的WebSocket支持外,還有如下改進 - 你能夠在springmvc項目使用@RestController註解,它能夠去掉你每一個@RequestMapping方法的返回時的@ResponseBody註解;sql