PartII :spring 4.0的更新

##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

3.2 去掉過期的包和方法(Removed deprecated Packages and methods)

許多過期的包,類,方法已經從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
				   }
				 }
			}

3.6 核心容器改善

有如下改善:web

  • 將泛型類型視爲注入機制的限制條件.例如你使用Repository,那麼你能夠很容易注入一個具體實現 @Autowired Repository<Customer> customerRepository;
  • 若是你使用spring的元註解支持,你能夠開發自動以註解,從資源註解中暴露特定屬性;
  • @Order 加載順序,值越小越先加載
  • @Lazy 可做用在Bean的註解上;
  • @Description 註解用於基於java配置
  • @Conditional 條件註解()簡單示例:@Conditional(Conditioner.class);
public class Conditoner implement condition{
		@Override
		public boolean matches(ConditionContext context,AnnotatedTypeMedtadata metadata){
		   return  ....
		   ;
		}
	}

簡單使用, 和profile註解效果類似spring

  • CGLIB-based 的代理類不須要一個默認的構造器. objenesis 類庫提供的支持,而它集成到spring中.你的代理類就不需構造器了
  • 提供時區管理的功能;經過LocaleContext類

###3.7 web優化 要使用Servlet3.0的包,2.5雖然也能夠.但若是你要使用Spring Mvc Test 框架,就必須用Servlet3.0; 除了下文會提到的WebSocket支持外,還有如下改進 - 你能夠在springmvc項目使用@RestController註解,它能夠去掉你每一個@RequestMapping方法的返回時的@ResponseBody註解;sql

  • 已添加AsyncRestTemplate 類,提供非阻塞的異步支持
  • 提供完善的時區支持 ###3.8 webSocket,SockJS,and STOMP Messaging spring-websocket模塊對基於WebSocket的應用提供全面支持;WebSocket可使客戶端和服務器之間進行通訊.它兼容JSR-356,Java webSocket API,還對目前不支持WebScoket協議的瀏覽器提供了其餘基於SockJS的失敗支持(換成長鏈接或短鏈接),如IE10如下版本不支持webSocket協議; 一個新的spring消息模塊添加了對STOMP的支持,它使用註解編程模式,用於從WebSocket客戶端接收和處理STOMP的消息.經過它,@Controller的類能夠同時在一個方法上添加@RequestMapping和@MessageMapping方法,用來處理http請求和基於webSocket鏈接客戶端的消息; 這個新的Spring-messageing 模塊也包括了原來的spring Integer項目的關鍵抽象;例如Message,MessageChannel,MessageHandler,還有其餘做爲消息應用的基礎服務的組件; 對於更多的細節,包括更詳細的介紹,請參考Chapter 26, WebSocket Support 這章; ###3.9 測試優化 除了去掉過期的代碼,spring4.0還提供了單元測試和基礎測試的一些新方法
  • 原來的spring-test模塊的大部分註解(例如 @ContextConfiguration,@WebAppConfiguration,@ContextHierarchy,@ActiveProfilles)能夠做爲元註解來生成自定義註解,並減小測試環境的重複配置;
  • 啓動Bean定義的Profiles能夠經過編程釋放,能夠一個自定義實現的ActiveProfilesResolver類,並把它經過@ActiveProfiles的resolver屬性進行註冊;
  • spring core中提供了一個新的SocketUtils類,它能夠掃描TCP和UDP服務器在本地的空閒端口;該功能並非針對測試的,可是在聚合測試使用socket時會頗有用.例如,測試時啓動了一個啓動內存的SMTP服務器,FTP服務器,Servlet服務器等.
  • spring4.0,在org,springframework.mock.web包的模擬部分已經基於Servlet3.0的API了.還有,Servlet API的模擬模塊一部分更新爲少許增強和優化;
相關文章
相關標籤/搜索