AOP - Advisor

  1. 定义通知

    public class LoggingAdvice implements MethodInterceptor {
        @Override
        public Object invoke(MethodInvocation invocation) throws Throwable {
            System.out.println("Method " + invocation.getMethod().getName() + " is being called");
            return invocation.proceed(); // 继续执行目标方法
        }
    }
    
  2. 定义切点

    public class LoggingPointcut implements Pointcut {
        @Override
        public ClassFilter getClassFilter() {
            return ClassFilter.TRUE; // 适用于所有类
        }
    
        @Override
        public MethodMatcher getMethodMatcher() {
            return new NameMatchMethodMatcher() {
                @Override
                public boolean matches(String methodName, Class<?> targetClass) {
                    return methodName.startsWith("get"); // 适用于所有以 "get" 开头的方法
                }
            };
        }
    }
    
  3. 定义切面类

    public class LoggingAdvisor extends DefaultPointcutAdvisor {
        public LoggingAdvisor() {
            super(new LoggingPointcut(), new LoggingAdvice());
        }
    }
    
  4. 注册切面

    @Configuration
    public class AopConfig {
        @Bean
        public LoggingAdvisor loggingAdvisor() {
            return new LoggingAdvisor();
        }
    }
    
posted @   CyrusHuang  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示