1. 程式人生 > 實用技巧 >Spring AOP(一)

Spring AOP(一)

介紹

AOP,aspect oriented programing,面向切面程式設計。
動態代理:基於JDK和基於第三方cglib

  • Joinpoint(連線點):可以被攔截的點
  • Pointcut(切入點):被攔截的點
  • Advice(通知/增強):對連線點進行改變
  • Target(目標物件):代理的目標物件
  • Aspect(切面):切入點和通知的結合

使用

1、配置pom.xml

<!--aop依賴jar-->
<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjweaver</artifactId>
    <version>1.9.4</version>
</dependency>

2、配置檔案的約束

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd 
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd">
</beans>

3、配置通知

<bean id="account" class="com.my.entity.Account>
<bean id="accountAspect" class="com.myentity.AccountAspect">
<!--AOP配置-->
<aop:config>
    <!--配置全域性切入點-->
    <!--<aop:pointcut id="" expression=""/>-->
    <!--配置切面-->
    <aop:aspect id="myAspect" ref="accountAspect">
        <!--配置切面屬性:通過通知標籤描述切入點-->
        <aop:before method="myBefore" pointcut-ref="pt"/>
        <aop:after-returning method="myAfterReturning" pointcut-ref="pt"/>
        <aop:after-throwing method="myThrowing" pointcut-ref="pt"/>
        <aop:after method="myAfter" pointcut-ref="pt"/>
        <!--配置區域性切入點:只能當前切面使用-->
        <aop:pointcut id="pt" expression="execution(public void com.yaroange.service.impl.UserServiceImpl.addUser(java.lang.Integer))"/>
    </aop:aspect>
</aop:config> 

切入點表示式

execution([修飾符] 返回值型別 包名.類名.方法名(引數))