发表于: 2020-07-19 23:58:55
1 1362
今天完成的事情
无,写了一天的 bug,还没修完。
遇到的问题
1. 拦截器内部注入的 service 为空
原因
在 java 配置类加载拦截器的时候是 new 出来的,此时没法往拦截器注入 service。
这个地方有点坑,我在网上看到的教程是 new 出来的,它们没有在拦截器内部注入组件,所以用起来一切正常。
解决的方法
在拦截器配置类的内部注入拦截器,然后再加载拦截器。
2. 相同类型的对象转型报错
类似于 class x.x.A cannot be cast to x.x.A
原因
客户端即 web 端,我在选组件的时候选择了 springboot-boot-devtools 组件
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
这个组件会使用 restart 类加载器,而有一部分组件使用的是默认的 base 类加载器,这导致了两个相同的类型却使用不同类加载器的对象无法互相转换。
具体是什么时候使用的什么类加载器我不清楚。长见识了,昨天我还以为序列化与反序列化只与包名、序列化 ID 有关。
更加诡异的是在 springtest 中一切正常,到 controller、service、interceptor 中就出错。
解决的方法
移除这个组件。
收获
1.
评论