dependencies { implementation 'com.github.iroh:iroh:1.2.0' } import io.github.biezhi.iroh.IrohAdvisor; import io.github.biezhi.iroh.JoinPoint; import io.github.biezhi.iroh.annotation.*; import io.github.biezhi.iroh.asm.IrohClassVisitor; @Aspect public class MyAdvisor extends IrohAdvisor { @Before(className = "com.example.MyClass", methodName = "myMethod") public void before(JoinPoint joinPoint) { System.out.println("Before advice"); } @Around(className = "com.example.MyClass", methodName = "anotherMethod") public Object around(ProceedingJoinPoint proceedingJoinPoint) { System.out.println("Before around"); Object result = proceedingJoinPoint.proceed(); System.out.println("After around"); return result; } @AfterThrowing(className = "com.example.MyClass", methodName = "someMethod") public void afterThrowing(JoinPoint joinPoint, Throwable throwable) { System.out.println("Exception thrown: " + throwable.getMessage()); } @After(className = "com.example.MyClass", methodName = "anyMethod") public void after(JoinPoint joinPoint) { System.out.println("After advice"); } @Override public void setupClassVisitor(IrohClassVisitor irohClassVisitor) { } } @Override public void setupClassVisitor(IrohClassVisitor irohClassVisitor) { irohClassVisitor.visitMethodInsn(INVOKESTATIC, "com.example.MyLogger", "log", "()V", false); } public class MyApp { public static void main(String[] args) { MyAdvisor advisor = new MyAdvisor(); advisor.run(); // ... } }


上一篇:
下一篇:
切换中文