一,什麼是springaop?
所謂的springaop就是面向切面程式設計,就是在你的原有專案功能上,通過aop去新增新的功能,這些功能是建立在原有的功能基礎上的,而且不會修改原來的動能**以及功能邏輯。例如你用銀行卡購物,購物付款,這是乙個功能。付款後,銀行向你的手機傳送一條取錢資訊,這就是新加的功能。也就是實現了增強
二,springaop的實現機制是什麼?
橫向抽取機制,那麼什麼是橫向抽取機制呢?所謂的橫向抽取機制就是使用動態的**的方式(cglib**和jdk**)來實現物件的**,實際上我們操作的是假物件。既然有橫向抽取機制,那麼有沒有縱向**模式呢 ?答案是有的。那麼什麼是縱向抽取呢?縱向抽取就是把公共的方法寫在父類裡,所有的類都繼承父類,這樣就是能呼叫父類的方法。例如,你購物付款是乙個子類的功能,你可能還會取款,這也是乙個功能,而在他們結束之後,銀行都會傳送乙個資訊給你,這又是乙個功能,這個銀行給你傳送資訊是個公共的方法,所以這個發資訊的功能就是屬於父類的。子類繼承父類並呼叫父類的方法就是縱向抽取。
三,springaop的使用場景
一般來說:列印日誌,還有簡訊通知啊,許可權驗證等,都可以使用aop來實現。
四,sringaop的兩種實現方式
(1)xml檔案配置方式
(2)註解的方式實現
那麼,下面我們就這兩個方式以demo的形式講解一下。
方式一:xml方式配置
a:建立被加強類(鏈結點類)
package cn.ytk.dao;
import org.springframework.stereotype.repository;
@repository
public class userdao
}
b:建立增強類
package cn.ytk.strong;
import org.aspectj.lang.proceedingjoinpoint;
public class project
/* * 環繞通知
* */
public void around(proceedingjoinpoint point) throws throwable
public void after1()
}
c:配置切點和切面
d:執行結果
由上面的配置檔案可以看出,配置相當複雜,接下來我們看一下使用spring註解的方式如何使用吧。
方式二:通過springaop註解實現
a:配置spring檔案,開啟aop註解
b:編寫增強類
package cn.ytk.strong;
import org.aspectj.lang.proceedingjoinpoint;
import org.aspectj.lang.annotation.afterreturning;
import org.aspectj.lang.annotation.aspect;
import org.aspectj.lang.annotation.before;
import org.aspectj.lang.annotation.pointcut;
import org.springframework.stereotype.component;
@component
@aspect
public class project2
//方式二:先編寫切點在將切點加到加強上。
@pointcut("execution(* cn.ytk.dao.*.*(..))")
public void after() {}
@afterreturning("after()")
public void after1()
}
我們可以看出上面給出了兩種方式,第一種是註解直接加在增強方法上,第二種是先定義切點,在增強,這兩種方式都可以實現springaop的操作。
五,springaop常用的相關術語
通知、增強處理(advice)
就是在你已經實現的功能上新增其他的功能,例如列印日誌,完成操作時傳送簡訊等。
連線點(joinpoint
)和方法有關的前前後後都是連線點。
切入點(pointcut)
上面說的連線點的基礎上,你想讓增強使用咋什麼方法之上就是切點。
切面(aspect)
切面是通知(增強)和切入點的結合。
spring aop註解與xml配置兩種方式
spring aop切面兩種使用方式 1.使用xml配置檔案的方式,個人感覺 比較清晰,能夠體現出明顯的層次感 以上部分為spring容器建立後管理的bean 以下為開啟aop的相關配置 junit 測試 runwith springjunit4classrunner.class contextco...
學習Spring aop兩種配置方式
aop 面向切面程式設計,它可以解決重複 aop有兩種方式 1 在springmvc servlet.xml中配置aop,應用bean檔案 2 在bean檔案的類上加 component component public class loging public object doaround pro...
Spring AOP的兩種配置方式
before 前置通知,在方法執行之前執行 after 後置通知,在方法執行之後執行 afterrunning 返回通知,在方法返回結果之後執行 afterthrowing 異常通知,在方法丟擲異常之後 around 環繞通知,圍繞著方法執行 aspect component public clas...