这周用buddy 对 spring controller注解做一个日志监控
buddy 只是做的aop功能,具体调用还是spring 容器的log 对象
这个功能在jar 上运行良好,但是war 出现 NoClassDefFoundError 日志对象
经过尝试,和收集资料,知道是类加载导致的
byte-buddy 的ClassLoader 是appClassLoader
jar 的类加载机制,还没去百度,可能依靠于mavan 库,所以调用,可以找到【后面更新完善】
war 类加载机制,参考tomcat 类加载机制,其中webclassLoader 是一个项目私有的,所有访问webapp log,出现NoClassDefFoundError,其次,不同的classLoader 加载的对象也不同,所以我这边必须获取同一个webclassLoader 下的log
通过实验,发现bytebuddy 的Thread。classLoader,就是执行的wepclassLoader,但是由于,获取通过一个webappClassLoader
所有我在日志类那边加了一个方法,通过反射解决
c++ Jvm 实现原理【https://juejin.im/post/5b0b732bf265da0dcc69d084】
classLoader【https://www.cnblogs.com/KingIceMou/p/6769456.html】
class 文件和Thread 执行区别【https://www.cnblogs.com/549294286/p/3714692.html】【主要参考】】
classLoader 特性[https://blog.youkuaiyun.com/xyang81/article/details/7292380]