发表于: 2020-07-19 23:58:55

1 1357


今天完成的事情

无,写了一天的 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. 




返回列表 返回列表
评论

    分享到