Spring AOP

Posted StanLong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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>

 

以上是关于Spring AOP的主要内容,如果未能解决你的问题,请参考以下文章

JAVA之AOP

Spring AOP

Spring源码高级笔记之——Spring AOP应用

2018.12.24 Spring中的aop演示

Spring框架 AOP

Spring的AOP面向切面编程