zoukankan      html  css  js  c++  java
  • Spring AOP

    AOP: Aspect Object Programming 面向切面编程。

    AOP的主要功能是让关注点代码和业务代码分离。

    关注点即重复的代码,切面即关注点形成的类。

    面向切面编程即面向重复的代码编程,在运行的时候业务方法动态植入“切面类代码”。

    AOP的相关jar包

    1、spring-aop.jar

    2、aspectj.jar(aop的依赖包)

    3、aspectjweaver.jar

    4、aopalliance.jar

    XML配置及切入点表达式

    <!-- 切面类 -->
      <bean id="aop" class="com.istonestone.aop"></bean>
        
        <!-- AOP配置 -->
        <aop:config>
            <!-- 定义一个切入点表达式,拦截哪些方法 “ * com.isoftstone.aop.*.*(..)”格式说明
            “修饰符 包名.类名.方法名(方法参数)”即  拦截com.isoftstone.aop包下任何类带任何参数返回修饰符的方法
            -->
            <aop:pointcut id="pt" expression="execution(* com.isoftstone.Dao.*.*(..))"/>
            
            <!-- 拦截所有public方法-->
            <aop:pointcut id="pt1" expression="execution(public * *(..))"/>
            
            <!-- 拦截指定方法 ,例如拦截所有save方法-->
            <aop:pointcut id="pt2" expression="execution(* save*(..))"/>
            
            <!-- 拦截指定类的指定方法 -->
            <aop:pointcut id="pt3" expression="execution(* com.isoftstone.Dao.save(..))"/>        
            
            <!-- 拦截包及其子包下的所类的所有方法 -->
            <aop:pointcut id="pt4" expression="execution(* com..*(..))"/>
            
            <!--拦截多个表达式  -->
            <aop:pointcut id="pt5" expression="*execution(* com.isoftstone.Dao.save(..)) or * execution(* com.isoftstone.Dao.update(..))"/>
            
            <!-- 取非值 -->
            <aop:pointcut id="pt6" expression="!execution(* com.isoftstone.Dao.save(..))"/>        
            
            <aop:aspect ref="aop">
                <!-- 环绕通知 -->
                <aop:around method="around" pointcut-ref="pt"/>
                
                <!-- 前置通知,在目标方法调用前执行 -->
                <aop:before method="begin" pointcut-ref="pt"/>
                
                <!-- 后置通知 -->
                <aop:afater method="after" pointcut-ref="pt"/>
                
                <!-- 返回后通知 -->
                <aop:afater-returning method="afterRetruning" pointcut-ref="pt"/>
                
                <!-- 异常通知 -->
                <aop:afater-throwing method="afterThrowing" pointcut-ref="pt"/>
                
            </aop:aspect>
        </aop:config>
  • 相关阅读:
    初学angular
    C#二维数组及其本质(转)
    蓝桥杯之递归算法
    同时安装Office2016和Visio2016
    蓝桥杯之暴力破解、枚举
    NAT(地址解析协议)
    云中继
    ACL(访问控制列表)
    虚拟链路(virtual-link)
    单臂路由
  • 原文地址:https://www.cnblogs.com/StanLong/p/6986945.html
Copyright © 2011-2022 走看看