SpringBoot中的SpringMVC扩展功能
在之前我们在springmvc中配置视图解析器和拦截器的时候都是需要在xml文件中编写一些配置文件以达到扩展的功能。如下所示添加视图映射。
<mvc:view-controller path="/hello" view-name="success"/>
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/hello"/>
<bean></bean>
</mvc:interceptor>
</mvc:interceptors>
而SpringBoot为了简单化这类的功能,在SpringBoot中自动加载了许多以前SpringMVC需要手动配置的东西,例如视图解析器,消息转换器等。
但是我们在有些的时候我们不能用SpringBoot里面的mvc扩展的功能,所以我们就需要在SpringBoot中编写SpringMVC的扩展功能。
在之前的springboot中编写一个配置类(@Configuration),是WebMvcConfigurerAdapter类型进行扩展配置SpringMvc中的自定义属性配置。但是当前版本将这个类废弃,根据java8的特性,接口不需要实现类重写接口中的全部方法。所以扩展SpringMvc的属性就可以实现WebMvcConfigurer接口。实现对应的方法就可以了。
代码实现
第一步:编写MVC扩展类
//使用WebMvcConfigurerAdapter可以来扩展SpringMVC的功能
//@EnableWebMvc 不要接管SpringMVC
@Configuration
public class MyMvcConfig extends WebMvcConfigurerAdapter {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
// super.addViewControllers(registry);
//浏览器发送 /atguigu 请求来到 success
registry.addViewController("/atguigu").setViewName("success");
}
//所有的WebMvcConfigurerAdapter组件都会一起起作用
@Bean //将组件注册在容器
public WebMvcConfigurerAdapter webMvcConfigurerAdapter(){
WebMvcConfigurerAdapter adapter = new WebMvcConfigurerAdapter() {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("login");
registry.addViewController("/index.html").setViewName("login");
}
};
return adapter;
}
}
-
编写一个配置类(@Configuration),是WebMvcConfigurerAdapter类型;不能标注@EnableWebMvc,如果标注了@EnableWebMvc的类就会全部的接管Mvc的功能,SpringBoot就不会自动的为我们进行自动的配置;
-
实现WebMvcConfigurer类,用来说明这个类是用来配置MVC的扩展容器。(有些视频上面使用的是继承WebMvcConfigurerAdapter的类,但是我们会发现这个类好像要被淘汰了,所以SpringBoot推荐我们去实现WebMvcConfigurer类,或者继承WebMvcConfigurationSupport)
运行即可