SpringBoot2.3.2,写拦截器做登录权限验证,要么报错,要么不拦截,要么连白名单也拦截。
下面举出所有报错:
1、自动配置类报错:Bean注入问题,找了许多博客,都说是@RequestMapping("/xxx")的路径重复之类的,然而并没有成功解决问题。
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'requestMappingHandlerMapping' defined in class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping]: Factory method 'requestMappingHandlerMapping' threw exception; nested exception is java.lang.NullPointerException
推测可能的错误原因是SpringBoot版本问题导致的注入问题。
2、Thymeleaf的th:href和th:src这种的th报红,解决就在标签中声明一下模板就好了:
<HTML xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
3、拦截器运行不拦截指定路径的页面。
4、拦截器连白名单页面也拦截。
最终在困扰48小时后,妥协的选择将pom.xml的Springboot版本从SpringBoot2.3.2改为1.5.7。
遂运行成功。
(注意,在SpringBoot2.0以下,MySQL数据库驱动注册是com.mysql.jdbc.Driver
,而非com.mysql.cj.jdbc.Driver
,即使你的MySQL是8.0版本。我们这里修改版本,这里数据库驱动注册也要改。)
项目完成以后一定好好去看看SpringBoot的官方文档和相关教程。