网站手机版跳转代码/网站网络推广优化
环境描述:
spring boot 2.x、jdk1.8
问题描述:
在使用AOP时,当获取到CGLIB代理对象类Class之后,在判断代理类Class是否包含泛型时与被代理类返回结果不一致,
在项目中M990001_Service所实现接口包含泛型

对于目标类的泛型操作具体代码如下

当未使用AOP操作M990001_Service时,此时传入的是目标类对象,并且代码行判断是通过的
if

此行代码是判断目标类的四线接口是否包含泛型属性,而事实上M990001_Service所实现的
TransService<T_M990001, R_M990001>接口包含了泛型参数
但是,
当使用AOP来处理M990001_Service的时候,此时传入到该部分代码的并不是目标类,而是目标类的代理类

通过DEBUG可以看出,出入的目标类是有CGLIB实现的代理类,而对于是否包含泛型的判断也返回false,
那这个问题该怎么解决呢?
首先判断传入的目标类是否为代理类,如果是代理类,则根据代理类获取被代理了
解决方案:
按照刚刚说的思路,修改原代码实现就行了,当然,要注意不同的代理方式,获取被代理对象是不同的,以下附上代码
import
知乎编辑器太垃圾了,令附截图

