博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Boot 2.0踩坑笔记
阅读量:7048 次
发布时间:2019-06-28

本文共 2395 字,大约阅读时间需要 7 分钟。

hot3.png

一、扩展Spring MVC

在springboot2.0之前 我们如果需要扩展SpringMvc,一般是继承 WebMvcConfigurerAdapter 来实现url的定向,

@Configurationpublic class MyMvcConfig extends WebMvcConfigurerAdapter {    @Override    public void addViewControllers(ViewControllerRegistry registry) {        //浏览器发送 /test 请求来到 success        registry.addViewController("/test").setViewName("success");    }}

在springboot 2.0以后 WebMvcConfigurerAdapter 这个方法已经过时,那怎么来修改呢?

有两种方式:

第一种 :继承WebMvcConfigurationSupport这个类,重写父类的方法即可。但是这种方式是有问题的,这种方式会屏蔽Spring Boot的@EnableAutoConfiguration中的设置。

原因:WebMvcAutoConfiguration会先判断如果不存在WebMvcConfigurationSupport类才会生效。

@Configuration@ConditionalOnWebApplication(    type = Type.SERVLET)@ConditionalOnClass({Servlet.class, DispatcherServlet.class, WebMvcConfigurer.class})@ConditionalOnMissingBean({WebMvcConfigurationSupport.class})@AutoConfigureOrder(-2147483638)@AutoConfigureAfter({DispatcherServletAutoConfiguration.class, ValidationAutoConfiguration.class})public class WebMvcAutoConfiguration {

这时候启动项目时会发现映射根本没有成功,读取不到静态的资源也就是说application.properties中添加配置的映射配置没有启动作用,然后我们会想到重写来进行映射:

@Configurationpublic class myMvcConfig extends WebMvcConfigurationSupport{     @Bean    public WebMvcConfigurationSupport webMvcConfigurationSupport(){        WebMvcConfigurationSupport support = new WebMvcConfigurationSupport(){            @Override            protected void addViewControllers(ViewControllerRegistry registry) {                registry.addViewController("/").setViewName("login");                registry.addViewController("/main.html").setViewName("dashboard");                // registry.addViewController("/login.html").setViewName("login");            }             @Override            public void addResourceHandlers(ResourceHandlerRegistry registry) {                //registry.addResourceHandler("/resources/static/**").addResourceLocations("classpath:/static/");                registry.addResourceHandler("/static/**").addResourceLocations("classpath:/resources/static/");                super.addResourceHandlers(registry);            }        };        return support;    }

第二种:实现WebMvcConfigurer这个接口,(推荐使用这种)

@Configurationpublic class MyWebMvcConfigurationAdapter implements WebMvcConfigurer{    @Override    public void addViewControllers(ViewControllerRegistry registry) {        registry.addViewController("/test").setViewName("success");    }}

 

转载于:https://my.oschina.net/u/737121/blog/1921942

你可能感兴趣的文章
【leetcode】123. Best Time to Buy and Sell Stock III
查看>>
角色设计的特点
查看>>
sublime text格式化json快捷键
查看>>
获得数据库自动生成的主键
查看>>
磁盘阵列
查看>>
y轴数据变换利器——yaxis-transformer
查看>>
Hibernate缓存机制
查看>>
从头开始复习css之动画
查看>>
sed常见用法,删除匹配行的上2行,下3行
查看>>
【BZOJ】1415 [Noi2005]聪聪和可可 期望DP+记忆化搜索
查看>>
android 7.1 调用相机崩溃解决办法
查看>>
访问控制符
查看>>
Android studio修改字体(font)大小(size)
查看>>
------第二节-----------------第二讲----单链表的基本操作---------
查看>>
iOS 百度地图大头针使用
查看>>
1118: 零起点学算法25——求两点之间的距离
查看>>
delegate代理设计模式
查看>>
花10分钟搞懂开源框架吧 - 【NancyFx.Net】
查看>>
busybox的使用
查看>>
GridView(网格视图)+MotionEvent(触控事件)实现可以拖动排序的网格图
查看>>