Spring Web MVC如何进行配置

  介绍

Spring Web MVC如何进行配置?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

<>强启用MVC Java配置和XML命名空间

<强>默认配置

要启用MVC Java配置(@ controller等各种注解)和XML命名空间,如果使用的是Java配置,在配置类上再添加@EnableWebMvc注解即可。

@ configuration   @EnableWebMvc   公开课WebAppConfig {      }

如果使用XML配置文件的话,添加下面一行即可。

& lt; mvc:注解驱动/祝辞

不论使用哪种方式,都会在春天中注册一些组件来提供最基本的mvc功能。这些功能在文档中说的很清楚。我简单翻译了一下:

上面的配置会注册一个RequestMappingHandlerMapping,一个RequestMappingHandlerAdapter和一个ExceptionHandlerExceptionResolver来提供注解控制器和注解方法(比如@RequestMapping和@ExceptionHandler等)处理请求的功能。

还会启用以下功能:

    <李>通过一个ConversionService实例,来进行弹簧3方式的类型转换及数据绑定支持。 <李> @NumberFormat格式化数字字段的支持 <李> @DateTimeFormat格式化日期,日历,长,JodaTime类型字段的支持。 <李>在控制器方法上使用@Valid验证Bean的支持,如果检测到jsr - 303豆验证的实现。 <李>一组HttpMessageConverter,用于在字符串和所需的Java类型之间进行类型转换,具体的列表参见春文档22.16.1。启用MVC Java配置或MVC XML名称空间。

通过这些默认配置,我们即可开始最基本的Spring MVC使用。

<>强自定义配置

上面提供了最基本的配置。如果需要自定义某些配置也可以。如果使用Java配置的话,让配置类实现WebMvcConfigurer接口,更常用的办法是继承WebMvcConfigurerAdapter基类,通过重写基类中的方法即可配置相关功能。

@ configuration   @EnableWebMvc   公开课WebConfig延伸WebMvcConfigurerAdapter {//有很多个方法可以重写,来提供自定义功能      }

如果使用XML配置文件,通过IDE的自动补全功能查看一下& lt; mvc:注解驱动/祝辞有哪些子属性和子元素。

<强>类型转换和格式化

默认情况下春天注册了数量(包括所有基本数字类型)和java.util。日期的类型转换和格式化功能。要提供类型的转换和格式化功能,就需要自己注册相应的类型转换器和格式化器。

如果使用Java配置的话,重写addFormatters (FormatterRegistry注册表)方法并添加相应功能即可。

@ configuration   @EnableWebMvc   公开课WebConfig延伸WebMvcConfigurerAdapter {      @Override   公共空间addFormatters (FormatterRegistry注册表){//添加格式器和/或转换器   }      }

如果使用XML配置的话,需要注册一个ConversionService,然后添加到& lt; mvc: annotation-driven>节点中。

 & lt; mvc:注解驱动转换服务=癱onversionService"/比;
  
  & lt; bean id=癱onversionService"
  类=皁rg.springframework.format.support.FormattingConversionServiceFactoryBean"比;
  & lt;属性名=癱onverters"祝辞
  & lt; set>
  & lt; bean类=皁rg.example.MyConverter"/比;
  & lt;/set>
  & lt;/property>
  & lt;属性名=癴ormatters"祝辞
  & lt; set>
  & lt; bean类=皁rg.example.MyFormatter"/比;
  & lt; bean类=皁rg.example.MyAnnotationFormatterFactory"/比;
  & lt;/set>
  & lt;/property>
  & lt;属性名=癴ormatterRegistrars"祝辞
  & lt; set>
  & lt; bean类=皁rg.example.MyFormatterRegistrar"/比;
  & lt;/set>
  & lt;/property>
  & lt;/bean> 

<强>验证功能

春自己提供了一组接口和类提供了一套验证功能。不过更通用的方法是使用Bean验证进行Java对象的验证,Bean验证的一个实现就是Hibernate Validator。

默认情况下当@EnableWebMvc或& lt; mvc:注解驱动/祝辞配置之后,如果春检测到Bean验证,就会自动注册一个LocalValidatorFactoryBean来提供验证功能。如果我们希望手动处理验证过程,可能希望将验证器实例注入到控制器中,这时候就不能使用自动注册的LocalValidatorFactoryBean了。这时候我们可以选择手动注册一个LocalValidatorFactoryBeanBean实例,然后注解@Primary让自定义LocalValidatorFactoryBean被优先使用。

还有一种办法就是直接覆盖弹簧的默认验证器配置。如果使用Java配置的话,重写getValidator()方法即可。

@ configuration   @EnableWebMvc   公开课WebConfig延伸WebMvcConfigurerAdapter {      @Override   公开验证器getValidator () {//返回“global"验证器   }      }

Spring Web MVC如何进行配置