Spring Mvc 3.1 之后如何配置messageConverters

是一种简写形式,完全可以手动配置替代这种简写形式,简写形式可以让初学都快速应用默认配置方案。 会自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean,是spring MVC为@Controllers分发请求所必须的。

这句话我在很多帖子都看到过,我自己的项目本身使用的Spring MVC 3.2,实际上在3.1之后,注册的类发生了变化

Spring Framework 3.1 introduces a new set of support classes for processing requests with annotated controllers:

  • RequestMappingHandlerMapping

  • RequestMappingHandlerAdapter

  • ExceptionHandlerExceptionResolver

These classes are a replacement for the existing:

  • DefaultAnnotationHandlerMapping

  • AnnotationMethodHandlerAdapter

  • AnnotationMethodHandlerExceptionResolver




    




The above registers a RequestMappingHandlerMapping, a RequestMappingHandlerAdapter, and an ExceptionHandlerExceptionResolver (among others) in support of processing requests with annotated controller methods using annotations such as @RequestMapping @ExceptionHandler, and others.

It also enables the following:

  1. Spring 3 style type conversion through a ConversionService instance in addition to the JavaBeans PropertyEditors used for Data Binding.

  2. Support for formatting Number fields using the @NumberFormat annotation through the ConversionService.

  3. Support for formatting Date, Calendar, Long, and Joda Time fields using the @DateTimeFormat annotation.

  4. Support for validating @Controller inputs with @Valid, if a JSR-303 Provider is present on the classpath.

  5. HttpMessageConverter support for @RequestBody method parameters and @ResponseBody method return values from @RequestMapping or @ExceptionHandler methods.

    This is the complete list of HttpMessageConverters set up by mvc:annotation-driven:

    • ByteArrayHttpMessageConverter converts byte arrays.

    • StringHttpMessageConverter converts strings.

    • ResourceHttpMessageConverter converts to/from org.springframework.core.io.Resource for all media types.

    • SourceHttpMessageConverter converts to/from a javax.xml.transform.Source.

    • FormHttpMessageConverter converts form data to/from a MultiValueMap.

    • Jaxb2RootElementHttpMessageConverter converts Java objects to/from XML — added if JAXB2 is present on the classpath.

    • MappingJackson2HttpMessageConverter (or MappingJacksonHttpMessageConverter) converts to/from JSON — added if Jackson 2 (or Jackson) is present on the classpath.

    • AtomFeedHttpMessageConverter converts Atom feeds — added if Rome is present on the classpath.

    • RssChannelHttpMessageConverter converts RSS feeds — added if Rome is present on the classpath.

这是摘取的官方文档,可以看出,注册的类已经变成了 RequestMappingHandlerMapping和   RequestMappingHandlerAdapter。

我之前在不知道的时候,使用AnnotationMethodHandlerAdapter 进行配置,结果在有存在的情况下,我自己配置的AnnotationMethodHandlerAdapter 怎么都不起作用,于是去掉了标签,手动注册了AnnotationMethodHandlerAdapter ,和DefaultAnnotationHandlerMapping。结果引发了其他问题,比如文件无法上传的问题。


阅读文档发现Spring提供了基于自定义messageConverters的方法,如下所示:


    
        
        
    

下面展示我自己的配置




	
	
		
	

	
		
			
			
			
		
	

	
		
		
			
				text/plain;charset=UTF-8
			
		
	
	

		
			
				application/json;charset=UTF-8
				text/html;charset=UTF-8
			
		
		
			
				
				QuoteFieldNames
				WriteDateUseDateFormat
			
		
	
	
	
		
		
		
			
				text/xml;charset=UTF-8
				application/xml;charset=UTF-8
			
		
	

	
	
		
		
		
	

	

	
	

	
	
	
	
	

	
	
	
	

	
		
	

	
		
		

	

	
	

	
	
		
		
	



你可能感兴趣的:(Java)