可以在指定的某些類的某些方法的 前後或者 出現異常的時候,動態織入 指定的**
1. aop
aspect object programming 面向切面程式設計
功能: 讓關注點**與業務**分離!
2. 關注點
重複**就叫做關注點;
3. 切面
關注點形成的類,就叫切面(類)!(把很多類中重複的**抽取出來的類,叫切面類)
面向切面程式設計,就是指 對很多功能都有的重複的**抽取,再在執行的時候往業務方法上動態織入「切面類**」。
4. 切入點
執行目標物件方法,動態織入切面**。
可以通過切入點表示式,指定攔截哪些類的哪些方法; 給指定的類或方法在執行的時候植入切面類**。
1. 引入jar包
2. 引入命名空間,開啟aop註解
<?
xmlversion
="1.0"
encoding
="utf-8"
?>
<
beans
xmlns
=""xmlns:xsi
=""xmlns:p
=""xmlns:context
=""xmlns:aop=
""xsi:schemalocation="
/spring-beans.xsd
/spring-context.xsd
/spring-aop.xsd"
>
<
context:component-scan
base-package
="cn.shanglin.e_aop_anno"
>
context:component-scan
>
beans
>
3. 定義切面類
@component
//加入ioc容器 @
aspect
// 指定當前類為切面類
,被織入的**
publicclass
aop
// 前置通知 : 在執行目標方法之前執行 @
before
("pointcut_()")
publicvoid
begin()
// 後置/最終通知:在執行目標方法之後執行 【無論是否出現異常最終都會執行】 @
after
("pointcut_()")
publicvoid
after()
/*** 環繞通知:環繞目標方式執行,要麼使用@before("pointcut_()")和@after("pointcut_()"),
* 要麼就使用@around("pointcut_()"),兩個功能一樣不要混合使用 */
@around
("pointcut_()")
publicvoid
around(
proceedingjoinpoint
pjp)throws
throwable
// 返回後通知: 在呼叫目標方法結束後執行 【出現異常不執行】 @
afterreturning
("pointcut_()")
publicvoid
afterreturning()
// 異常通知: 當目標方法執行異常時候執行此關注點** @
afterthrowing
("pointcut_()")
publicvoid
afterthrowing() }
Spring aop 切面程式設計
package cn.annals.demo.proc.aop import org.aspectj.lang.joinpoint import org.aspectj.lang.proceedingjoinpoint import org.aspectj.lang.annotation.after...
Spring AOP切面程式設計
切面表示式 execution 修飾符 返回值型別 包.類.方法 引數列表 1 完全寫法 execution public void com.syy.xml aop.userimpl.work int 2 修飾符省略 execution void com.syy.xml aop.userimpl.w...
Spring AOP 面向切面程式設計
spring aop aop aspect orient programming 也就是面向切面程式設計 可以這樣理解,物件導向程式設計 oop 是從靜態角度考慮程式結構,面向切面程式設計 aop 是從動態角度考慮程式執行過程。在日常生活中,會遇到各種各樣的中介機構,比如獵頭公司,律師事務所,婚姻介...