資源描述:
《springmvc關(guān)于json、xml自動轉(zhuǎn)換的原理研究》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、SpringMVC關(guān)于json、xml自動轉(zhuǎn)換的原理研究視圖配置省略.....pom中需要有以下依賴(Spring依賴及其他依賴不顯示):org.codehaus.ja
2、cksonjackson-core-asl1.9.13org.codehaus.jacksonjackson-mapper-asl1.9.13這個依賴分別是json序列化的依賴。ok。我們在
3、Controller中添加一個method:@RequestMapping("/)@ResponseBodypublicMapmap=newHashMap();map.put("list",employeeService.list());returnmap;}直接訪問地址:我們看到,短短幾行配置。使用@ResponseBody注解之后,Controller返回的對象自動被轉(zhuǎn)換成對應(yīng)的json數(shù)據(jù),在這里不得
4、不感嘆SpringMVC的強大。我們好像也沒看到具體的配置,唯一看到的就是*-dispatcher.那么spring到底是如何實現(xiàn)java對象到j(luò)son對象的自動轉(zhuǎn)換的呢?為什么轉(zhuǎn)換成了json數(shù)據(jù),如果想轉(zhuǎn)換成源碼分析本文使用的spring版本是4.0.2。?在講解這個配置之前,我們先了解下Spring的消息轉(zhuǎn)換機制。@ResponseBody這個注解就是使用消息轉(zhuǎn)換機制,最終通過json的轉(zhuǎn)換器轉(zhuǎn)換成json數(shù)據(jù)的。HttpMessageCon
5、verter接口就是Spring提供的http消息轉(zhuǎn)換接口。有關(guān)這方面的知識大家可以參考"參考資料"中的第二條鏈接,里面講的很清楚。下面開始分析這句配置:這句代碼在spring中的解析類是:在AnnotationDrivenBeanDefinitionParser源碼的152行parse方法中:分別實例化了RequestMappingHandlerMapping,ConfigurableWebBindingInitializer,RequestMa
6、ppingHandlerAdapter等諸多類。其中RequestMappingHandlerMapping和RequestMappingHandlerAdapter這兩個類比較重要。RequestMappingHandlerMapping處理請求映射的,處理@RequestMapping跟請求地址之間的關(guān)系。RequestMappingHandlerAdapter是請求處理的適配器,也就是請求之后處理具體邏輯的執(zhí)行,關(guān)系到哪個類的哪個方法以及轉(zhuǎn)換器等工作,這個類是我們講的重點,其中它的屬性me
7、ssageConverters是本文要講的重點。私有方法:getMessageConverters從代碼中我們可以,RequestMappingHandlerAdapter設(shè)置messageConverters的邏輯:1.如果節(jié)點有子節(jié)點message-converters,那么它的轉(zhuǎn)換器屬性messageConverters也由這些子節(jié)點組成。message-converters的子節(jié)點配置如下:8、c:message-convertersregister-defaults="true">
?2.message-converters子節(jié)點不存在或它的屬性register-defaults為tru