spring boot 中 对 Spring MVC 功能的扩展
If you want to keep Spring Boot MVC features, and you just want to add additional [MVC configuration] (interceptors, formatters, view controllers etc.) you can add your own `@Configuration` class of type `WebMvcConfigurerAdapter`, but without `@EnableWebMvc`. If you wish to provide custom instances of `RequestMappingHandlerMapping`, `RequestMappingHandlerAdapter` or `ExceptionHandlerExceptionResolver` you can declare a `WebMvcRegistrationsAdapter` instance providing such components.
If you want to take complete control of Spring MVC, you can add your own `@Configuration` annotated with `@EnableWebMvc`.
对于需要扩展的功能,通过实现WebMvcConfigurerAdapter中对应的方法即可。
既保留了所有的自动配置,也能用我们扩展的配置;
package com.mxy.demo.Config;
import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
/**==编写一个配置类(@Configuration),是WebMvcConfigurerAdapter类型;
不能标注@EnableWebMvc;
既保留了所有的自动配置,也能用我们扩展的配置;
**/
@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
//super.addViewControllers(registry);
// 将 test_mvc_adapter请求跳转到success页面
registry.addViewController("/test_mvc_adapter").setViewName("success");
}
}
如何全面接管Spring MVC 呢(不使用Spring boot的默认配置)?
仅
//使用WebMvcConfigurerAdapter可以来扩展SpringMVC的功能
@EnableWebMvc
@Configuration
public class MyMvcConfig extends WebMvcConfigurerAdapter {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
// super.addViewControllers(registry);
//浏览器发送 /atguigu 请求来到 success
registry.addViewController("/atguigu").setViewName("success");
}
}
需在配置类中添加@EnableWebMvc即可;