一、檢測方法名是否符合規范
1、代碼
(1)MethodLoggerAgent
package com.example.agent;import net.bytebuddy.agent.builder.AgentBuilder;
import net.bytebuddy.asm.Advice;
import net.bytebuddy.matcher.ElementMatchers;import java.lang.instrument.Instrumentation;public class MethodLoggerAgent {public static void premain(String args, Instrumentation inst) {System.out.println("[Agent] MethodLoggerAgent loaded.");new AgentBuilder.Default().type(ElementMatchers.nameStartsWith("com.demo")) // 💡改成你的業務包名.transform((builder, typeDescription, classLoader, module, protectionDomain) ->builder.visit(Advice.to(LogAdvice.class).on(ElementMatchers.isMethod().and(ElementMatchers.not(ElementMatchers.nameStartsWith("lambda$")))))).installOn(inst);}
}
(2)LogAdvice
package com.example.agent;import net.bytebuddy.asm.Advice;public class LogAdvice {@Advice.OnMethodEnterpublic static void onEnter(@Advice.Origin("#t.#m") String method) {// 簡單安全檢查示例:打印日志System.out.println("[Agent][安全檢查] method call: " + method);// 如果檢測到不安全行為,可拋異常阻止執行,例如:if (method.contains("test")) {throw new SecurityException("命名不規范");}}
}
2、啟動主項目
如我這里有個接口
postman訪問并沒有返回結果
查看控制臺攔截并報錯了: