美文网首页
AOP中pointcut汇总

AOP中pointcut汇总

作者: jeffrey_hjf | 来源:发表于2020-04-03 02:36 被阅读0次
    /* 
        在任意public方法的执行时匹配 
         */  
        @Pointcut("execution (public * * (..)) ")  
        private void anyPublicOperation(){}  
      
        /* 
        任何以do开头的函数 
         */  
        @Pointcut("execution (* do* (..)) ")  
        private void anyDoOperation(){}  
      
        /* 
        Package下的任意连接点(方法)执行时匹配 
        */  
        @Pointcut("within (com.pubutech.example.aop.thinking.*)")  
        private void inPackage(){}  
      
        /* 
        Package下或者子包下的任意连接点(方法)执行时匹配 
         */  
        @Pointcut("within (com.pubutech.example.aop.thinking..*)")  
        private void inPackages(){}  
      
        /* 
        Package下或者子包下的任意public连接点(任意public方法)执行时匹配 
         */  
        @Pointcut("inPackages() && anyPublicOperation() ")  
        private void inPackageAnyPublicOPeration(){}  
      
        /* 
        Package下或者子包下的任意public连接点(任意public方法)执行时匹配 
        理论上 这里想告诉大家 within  target args 都没有我们都可以用execution 直接做到 
        */  
        @Pointcut("execution (public * com.pubutech.example.aop.thinking..*.*(..)) ")  
        private void inPackageAnyPublicOPerationInexecution(){}  
      
      
        /* 
        Package下或者子包下的任意连接点(方法)执行时匹配 
        */  
        @Pointcut("execution(* com.pubutech.example.aop.thinking..*.*(..))")  
        public void executioniInPackagesPointCut() {}  
      
        /* 
        Package下的任意连接点(方法)执行时匹配 
        */  
        @Pointcut("execution(* com.pubutech.example.aop.thinking.*.*(..))")  
        public void executioniInPackagePointCut() {}  
      
        /* 
        实现接口的所有实体对象的所有方法执行 
        */  
        @Pointcut("target (com.pubutech.example.aop.interfacetest.IBussiness)")  
        public void targetPointCut(){}  
      
        /* 
        接口的所有代理对象的所有方法执行,一般情况下和target一样,高深用法后面演示 
        */  
        @Pointcut("this (com.pubutech.example.aop.interfacetest.IBussiness)")  
        public void thisPointCut(){}  
      
        /* 
        精确拿到方法执行传递的参数 
        实际上  args参数我们可以用JAVA反射拿到,所以不用也是可以的,后面Around有案例 
         */  
        @Pointcut("execution(* com.pubutech.example.aop.interfacetest.BusinessImpl.doException(..)) && args(msg)")  
        public void argsPointCut(Message msg){}  
      
        /* 
        类级别的注解 里面所有的函数执行时 
        */  
        @Pointcut("@within(org.springframework.stereotype.Component)")  
        public void withinPointCut(){}  
      
        /* 
        函数传递的参数使用的注解对象 
        RequestBody Controller里面的Mapping方法里面请求参数是JSON格式的注解,帮助大家理解函数参数注解 
        @PostMapping(value = "/add") 
        public ObjectResponse add(@RequestBody UserEntity user) { 
         */  
        @Pointcut("@args(org.springframework.web.bind.annotation.RequestBody)")  
        public void aArgsPointCut(){}  
      
        /* 
        方法的注解所使用的 
        Transactional   方法事务执行的注解,这边只是一个案例,帮助大家理解一下方法注解 
        @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) 
        public void addRoleResources(Long roleId, String resourcesId) { 
         */  
        @Pointcut("@annotation(org.springframework.transaction.annotation.Transactional)")  
        public void annotationPointcut() {  
        }  
      
        /* 
        Spring 特有的bean操作 
         */  
        @Pointcut("bean(serviceImpl)")  
        public void beanPointCut(){}  
    

    相关文章

      网友评论

          本文标题:AOP中pointcut汇总

          本文链接:https://www.haomeiwen.com/subject/ywaqphtx.html