冲突原因:
不加skywalking的时候,JPA接口的代理方式为JDK动态代理,加入skywalking后,JPA的接口代理方式变成了CGLIB。如下图所示为判断JPA接口代理方式的逻辑:
之所以加入skywalking后,代理方式变成CGLIB的原因是,skywalking对hasNoUserSuppliedProxyInterfaces方法进来了重新定义。代理的逻辑代码如下图,第二张图是具体的重定义实现。
解决方式:
我的解决方式就是在afterMethod中增加判断,如果是JPA的接口则返回false,如下图所示
重新打包,然后将jar包放到skywalking下的plugins目录下即可。
附上打包后的下载链接:https://download.csdn.net/download/sj1231984/17231447