SpringBoot中的SpringMVC扩展功能

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)

运行即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值