Sping MVC 自動轉換 AnnotationMethodHandlerAdapter

Spring 3.X系列增加了新註解@ResponseBody@RequestBody 

  • @RequestBody 將HTTP請求正文轉換爲適合的HttpMessageConverter對象。
  • @ResponseBody 將內容或對象作爲 HTTP 響應正文返回,並調用適合HttpMessageConverter的Adapter轉換對象,寫入輸出流。

HttpMessageConverter接口,需要開啓<mvc:annotation-driven  />。 

AnnotationMethodHandlerAdapter將會初始化7個轉換器,可以通過調用AnnotationMethodHandlerAdaptergetMessageConverts()方法來獲取轉換器的一個集合 List<HttpMessageConverter> 

ByteArrayHttpMessageConverter 
StringHttpMessageConverter 
ResourceHttpMessageConverter 
SourceHttpMessageConverter 
XmlAwareFormHttpMessageConverter 
Jaxb2RootElementHttpMessageConverter 
MappingJacksonHttpMessageConverter
可以理解爲,只要有對應協議的解析器,你就可以通過幾行配置,幾個註解完成協議——對象的轉換工作!


      <!-- 啓動Spring MVC的註解功能,完成請求和註解POJO的映射 -->
      <bean
         class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
          <property name="messageConverters">
              <util:list id="beanList">
                <ref bean="stringHttpMessageConverter" />
                  <ref bean="jsonHttpMessageConverter" />
                  <ref bean="marshallingHttpMessageConverter" />
              </util:list>
         </property>
     </bean>
 
     <bean id="stringHttpMessageConverter"
         class="org.springframework.http.converter.StringHttpMessageConverter" />
     <bean id="jsonHttpMessageConverter"
         class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />
     <bean id="marshallingHttpMessageConverter"
         class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter">
         <property name="marshaller" ref="castorMarshaller" />
        <property name="unmarshaller" ref="castorMarshaller" />
    </bean>
 
     <bean id="castorMarshaller" class="org.springframework.oxm.castor.CastorMarshaller" />

MappingJacksonHttpMessageConverter能夠將POJO對象自動轉換爲JSON對象


@RequestMapping(value = "/getPojoJson" , method=RequestMethod.GET)
    public @ResponseBody Pojo getPojoJson() {
      Pojo pojo=new Pojo();
      pojo.setA("test");
      pojo.setB(1);
      pojo.setD(new Date());
      return pojo;
    }

需要依賴JSON對象的處理JAR包
jackson-core-lgpl.jar
jackson-mapper-lgpl.jar
下載地址:
http://jackson.codehaus.org/

以下將以
application/json;charset=UTF-8

進行自動轉換


<bean id="mappingJacksonHttpMessageConverter"       
	    class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">       
	      <property name="supportedMediaTypes">     
	           <list>            
	               <value>application/json;charset=UTF-8</value>             
	            </list>        
	       </property>    
	  </bean>    
	                     
	  <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">       	                       
	               <property name="messageConverters">        
	                   <list>              
	                       <ref bean="mappingJacksonHttpMessageConverter"/> 
	                    </list>        
	                </property>  
	   </bean>





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章