import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.*; @Aspect public class LoggingAspect { @Pointcut("execution(* com.example.myapp..*(..))") public void applicationPackagePointcut() { } @Before("applicationPackagePointcut()") public void logBefore(JoinPoint joinPoint) { System.out.println("Calling method: " + joinPoint.getSignature().getName()); } @AfterThrowing(pointcut = "applicationPackagePointcut()", throwing = "ex") public void logAfterThrowing(JoinPoint joinPoint, Throwable ex) { System.out.println("Exception in method: " + joinPoint.getSignature().getName()); System.out.println("Exception message: " + ex.getMessage()); } @Around("applicationPackagePointcut()") public Object logAround(ProceedingJoinPoint joinPoint) throws Throwable { System.out.println("Before method: " + joinPoint.getSignature().getName()); Object result = joinPoint.proceed(); System.out.println("After method: " + joinPoint.getSignature().getName()); return result; } } @Configuration @EnableAspectJAutoProxy public class AppConfig { // Other configurations @Bean public LoggingAspect loggingAspect() { return new LoggingAspect(); } }


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