zoukankan      html  css  js  c++  java
  • spring

    方式一:接口

      前置增强      MethodBeforeAdvice

      后置增强      AfterReturningAdvice

      异常抛出增强  ThrowsAdvice

      环绕增强      MethodInterceptor

      注意:还需要在applicationContext.xml文件中进行aop相关的配置

            <aop:config>
            <aop:pointcut expression="execution(public void *User())" id="addoptpointcut"/>
            <aop:advisor advice-ref="logbefore" pointcut-ref="addoptpointcut" />
        </aop:config>

            <aop:config>
            <aop:pointcut expression="execution(* spring_basic.UserService.*(..))" id="userServiceOptPointcut"/>
            <!--
            <aop:advisor advice-ref="exceptionAdvice" pointcut-ref="userServiceOptPointcut" />
             -->
            <aop:advisor advice-ref="logger" pointcut-ref="userServiceOptPointcut" />
        </aop:config>

    方式二:注解

      前置增强      @Before("execution(* service.*.*(..))")

      后置增强      @AfterReturning(pointcut="execution(* service.*.*(..))", returning="result")

      异常抛出增强  @AfterThrowing(pointcut="execution(* service.*.*(..))", throwing="ex")

      环绕增强      @Around("execution(* service.*.*(..))")

      注意:还需要在applicationContext.xml文件中添加如下配置

            <aop:aspectj-autoproxy></aop:aspectj-autoproxy>

    方式三:Scheme

      首先:添加普通的类,里面按要求编写方法

      public class Logger {

        public void before(JoinPoint jp){

        }
        
        public void after(JoinPoint jp, Object result){

        }
        
        public void aterThrowing(JoinPoint jp, Exception ex){

        }
        
        public Object aroundExecute(ProceedingJoinPoint pjp) throws Throwable{

        }

      }

      其次:在applicationContext.xml中配置aop-aspect相关的配置

            <aop:config>
            <aop:pointcut expression="execution(* service.*.*(..))" id="optpointcut"/>
            
            <aop:aspect ref="mylogger">
                <aop:before method="before" pointcut-ref="optpointcut" />
                <aop:after-returning method="after" returning="result" pointcut-ref="optpointcut" />
                <aop:after-throwing method="aterThrowing" throwing="ex" pointcut-ref="optpointcut" />
                <aop:around method="aroundExecute" pointcut-ref="optpointcut"/>
            </aop:aspect>
            
        </aop:config>

  • 相关阅读:
    Python(1)-第一天
    读书笔记-单元测试艺术(三)-使用桩对象解除依赖
    Sql2008调试问题
    读书笔记-单元测试艺术(二)-单元测试框架
    读书笔记-单元测试艺术(一)-单元测试的基本知识
    最长回文子串
    最大连续子序列之和,最大连续子序列乘积
    计数排序与位图排序
    筛选法求素数
    传说中的华为面试题(8分钟写出代码)
  • 原文地址:https://www.cnblogs.com/ws1313123/p/6424773.html
Copyright © 2011-2022 走看看