zoukankan      html  css  js  c++  java
  • java学习-springaop AOP-execution格式说明

    郑重声明: 本文首发于人工博客

    1、参数说明

    示例

    execution(* com._94rg.method.ces..*.*(..))
    
    标识符 含义
    execution() 表达式的主体
    第一个“*”符号 表示返回值的类型任意
    com._94rg.method.ces AOP所切的服务的包名,即,需要进行横切的业务类
    包名后面的“..” 表示当前包及子包
    第二个“*” 表示类名,*即所有类
    .*(..) 表示任何方法名,括号表示参数,两个点表示任何参数类型

    2、springaop的应用

    • 方法耗时监控
    • 出参、入参打印
    • 全局异常拦截
    • mock三方jar中的调用

    3、代码分享

    @Order(0)
    @Aspect
    @Component
    @Slf4j
    public class EsAspect {
        @Value("${testingMode:false}")
        private boolean testingMode;
    
        @PuppeteerConfigChangeListener
        private void configChangeListener(ConfigChangeEvent changeEvent) {
    
            if (changeEvent.isChanged("testingMode")) {
                testingMode =
                        Boolean.parseBoolean(
                                changeEvent.getChange("testingMode").getNewValue());
                log.info("当前的测试模式开关为:{}", testingMode);
            }
        }
    
        /**
         * 定义一个切入点
         */
        @Pointcut("execution(public * com._94rg.DocSearchApi.*(..))")
        private void doAspect() {
        }
    
        
        @Around("doAspect()")
        public Object methodMonitor(ProceedingJoinPoint pjp) throws Throwable {
            if (testingMode) {
                MethodSignature methodSignature = (MethodSignature) pjp.getSignature();
                Class type = methodSignature.getReturnType();
                if (type != Void.TYPE) {
                    return type.newInstance();
                }
    
            } else {
                return pjp.proceed();
            }
            return null;
        }
    
    }
    

    版权声明:本文为人工博客的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    本文链接:https://www.94rg.com/article/1734

    .
  • 相关阅读:
    通用Logging框架设计
    slf4j 与各个 logging框架的适配器说明
    优雅的使用Spring
    Python : 反射
    Python: Tools
    Python : Class
    Python : Module
    Python 入门:基本语法
    docker:版本变更
    Linux: yum配置说明
  • 原文地址:https://www.cnblogs.com/chen-xing/p/12371634.html
Copyright © 2011-2022 走看看