1. 简单介绍
1.1 背景
- 不能通过 -javaagent 方式启动
- 需要增强非业务代码( Spring AOP 不够用)
- 业务方尽量少改动代码
1.2 效果
1 | [Byte Buddy] BEFORE_INSTALL net.bytebuddy.agent.builder.AgentBuilder$Default$ExecutingTransformer@87f383f on sun.instrument.InstrumentationImpl@4eb7f003 |
2. 代码逻辑
2.1 启动类
1 | /** |
2.2 拦截方式
会改变程序执行的堆栈
1 | /** |
2.3 代码注入
不会改变代码堆栈流
这种方式也可以增强系统类
1 | /** |