Spring MVC常见配置说明

一 快捷ViewController

1 举例

     @Override
     public void addViewControllers(ViewControllerRegistry registry) {
          registry.addViewController("/index").setViewName("/index");
          registry.addViewController("/toUpload").setViewName("/upload");
          registry.addViewController("/converter").setViewName("/converter");
          registry.addViewController("/sse").setViewName("/sse");
          registry.addViewController("/async").setViewName("/async");
     }

2 说明

addViewController中的参数是路径,setViewName中的参数是页面名称。

二 路径参数配置

1 举例

      @Override
      public void configurePathMatch(PathMatchConfigurer configurer) {
      configurer.setUseSuffixPatternMatch(false);
      }

2 说明

在Spring MVC中,路径参数如果带有"."的话,"."后面的值将被忽略,可以通过上面示例的配置,使得"."后面的值不被忽略。

3 效果

三 更多配置

WebMvcConfigurerAdapter类的方法可以配置MVC。

因为WebMvcConfigurerAdapter是WebMvcConfigurer接口的实现,所以WebMvcConfigurer的API内的方法也可以用来配置MVC。

1 WebMvcConfigurerAdapter的源码

public abstract class WebMvcConfigurerAdapter implements WebMvcConfigurer {

     @Override
     public void addFormatters(FormatterRegistry registry) {
     }

     @Override
     public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
     }

     @Override
     public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
     }

     @Override
     public Validator getValidator() {
          return null;
     }

     @Override
     public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
     }

     @Override
     public void configureAsyncSupport(AsyncSupportConfigurer configurer) {
     }

     @Override
     public void configurePathMatch(PathMatchConfigurer configurer) {
     }

     @Override
     public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
     }

     @Override
     public void addReturnValueHandlers(List<HandlerMethodReturnValueHandler> returnValueHandlers) {
     }

     @Override
     public void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers) {
     }

     @Override
     public MessageCodesResolver getMessageCodesResolver() {
          return null;
     }

     @Override
     public void addInterceptors(InterceptorRegistry registry) {
     }

     @Override
     public void addViewControllers(ViewControllerRegistry registry) {
     }

     @Override
     public void configureViewResolvers(ViewResolverRegistry registry) {
     }

     @Override
     public void addResourceHandlers(ResourceHandlerRegistry registry) {
     }

     @Override
     public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
     }
}

2 WebMvcConfigurer的源码

public interface WebMvcConfigurer {
     /**
      * Add {@link Converter}s and {@link Formatter}s in addition to the ones
      * registered by default.
      */
     void addFormatters(FormatterRegistry registry);
     /**
      * Configure the {@link HttpMessageConverter}s to use for reading or writing
      * to the body of the request or response. If no converters are added, a
      * default list of converters is registered.
      * <p><strong>Note</strong> that adding converters to the list, turns off
      * default converter registration. To simply add a converter without impacting
      * default registration, consider using the method
      * {@link #extendMessageConverters(java.util.List)} instead.
      * @param converters initially an empty list of converters
      */
     void configureMessageConverters(List<HttpMessageConverter<?>> converters);
     /**
      * A hook for extending or modifying the list of converters after it has been
      * configured. This may be useful for example to allow default converters to
      * be registered and then insert a custom converter through this method.
      * @param converters the list of configured converters to extend.
      * @since 4.1.3
      */
     void extendMessageConverters(List<HttpMessageConverter<?>> converters);
     /**
      * Provide a custom {@link Validator} instead of the one created by default.
      * The default implementation, assuming JSR-303 is on the classpath, is:
      * {@link org.springframework.validation.beanvalidation.OptionalValidatorFactoryBean}.
      * Leave the return value as {@code null} to keep the default.
      */
     Validator getValidator();
     /**
      * Configure content negotiation options.
      */
     void configureContentNegotiation(ContentNegotiationConfigurer configurer);
     /**
      * Configure asynchronous request handling options.
      */
     void configureAsyncSupport(AsyncSupportConfigurer configurer);
     /**
      * Helps with configuring HandlerMappings path matching options such as trailing slash match,
      * suffix registration, path matcher and path helper.
      * Configured path matcher and path helper instances are shared for:
      * <ul>
      * <li>RequestMappings</li>
      * <li>ViewControllerMappings</li>
      * <li>ResourcesMappings</li>
      * </ul>
      * @since 4.0.3
      */
     void configurePathMatch(PathMatchConfigurer configurer);
     /**
      * Add resolvers to support custom controller method argument types.
      * <p>This does not override the built-in support for resolving handler
      * method arguments. To customize the built-in support for argument
      * resolution, configure {@link RequestMappingHandlerAdapter} directly.
      * @param argumentResolvers initially an empty list
      */
     void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers);
     /**
      * Add handlers to support custom controller method return value types.
      * <p>Using this option does not override the built-in support for handling
      * return values. To customize the built-in support for handling return
      * values, configure RequestMappingHandlerAdapter directly.
      * @param returnValueHandlers initially an empty list
      */
     void addReturnValueHandlers(List<HandlerMethodReturnValueHandler> returnValueHandlers);
     /**
      * Configure the {@link HandlerExceptionResolver}s to handle unresolved
      * controller exceptions. If no resolvers are added to the list, default
      * exception resolvers are added instead.
      * @param exceptionResolvers initially an empty list
      */
     void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers);
     /**
      * Add Spring MVC lifecycle interceptors for pre- and post-processing of
      * controller method invocations. Interceptors can be registered to apply
      * to all requests or be limited to a subset of URL patterns.
      * <p><strong>Note</strong> that interceptors registered here only apply to
      * controllers and not to resource handler requests. To intercept requests for
      * static resources either declare a
      * {@link org.springframework.web.servlet.handler.MappedInterceptor MappedInterceptor}
      * bean or switch to advanced configuration mode by extending
      * {@link org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport
      * WebMvcConfigurationSupport} and then override {@code resourceHandlerMapping}.
      */
     void addInterceptors(InterceptorRegistry registry);
     /**
      * Provide a custom {@link MessageCodesResolver} for building message codes
      * from data binding and validation error codes. Leave the return value as
      * {@code null} to keep the default.
      */
     MessageCodesResolver getMessageCodesResolver();
     /**
      * Configure simple automated controllers pre-configured with the response
      * status code and/or a view to render the response body. This is useful in
      * cases where there is no need for custom controller logic -- e.g. render a
      * home page, perform simple site URL redirects, return a 404 status with
      * HTML content, a 204 with no content, and more.
      */
     void addViewControllers(ViewControllerRegistry registry);
     /**
      * Configure view resolvers to translate String-based view names returned from
      * controllers into concrete {@link org.springframework.web.servlet.View}
      * implementations to perform rendering with.
      */
     void configureViewResolvers(ViewResolverRegistry registry);
     /**
      * Add handlers to serve static resources such as images, js, and, css
      * files from specific locations under web application root, the classpath,
      * and others.
      */
     void addResourceHandlers(ResourceHandlerRegistry registry);
     /**
      * Configure a handler to delegate unhandled requests by forwarding to the
      * Servlet container's "default" servlet. A common use case for this is when
      * the {@link DispatcherServlet} is mapped to "/" thus overriding the
      * Servlet container's default handling of static resources.
      */
     void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer);
}

猜你喜欢

转载自blog.csdn.net/chengqiuming/article/details/81749371