spring提供了兩種切面宣告方式,實際工作中我們可以選用其中一種:
①基於xml配置方式宣告切面,為aop專門提供了aop命名空間
②基於註解方式宣告切面,aspectj切點表示式語言的支援。@aspectj允許開發者在pojo中定義切面
採用註解方式實現(annotation)步驟
①引入aspectj類庫
②在當前類上面加上註解-@component,加上去之後掃瞄這個類
package com.aspectj.user;
public
inte***ce
iuser
package com.aspectj.user;
import org.springframework.stereotype.component;
@component
public
class
iuserimpl
implements
iuser
@override
public
void
printtwo()
@override
public
void
printthree()
}
③定義切面、切點和通知型別
package com.aspectj.advice;
import org.aspectj.lang.joinpoint;
import org.aspectj.lang.proceedingjoinpoint;
import org.aspectj.lang.annotation.after;
import org.aspectj.lang.annotation.afterreturning;
import org.aspectj.lang.annotation.afterthrowing;
import org.aspectj.lang.annotation.around;
import org.aspectj.lang.annotation.aspect;
import org.aspectj.lang.annotation.before;
import org.aspectj.lang.annotation.pointcut;
import org.springframework.stereotype.component;
//getsignature():返回被**的目標方法
//getname():被**的目標方法的名字
//@component控制器(注入服務)
//@service 服務(注入dao)
//@component (把普通pojo例項化到spring容器中,相當於配置檔案中的)
@component
@aspect
public
class
advice
//替換前置
// @before("execution(* com.aspectj.user.*.*(..))")
@before
(value=
"mypointcut()"
)public
void
before
(joinpoint joinpoint)
//替換後置
@afterreturning
(value=
"mypointcut()"
,returning=
"obj"
)public
void
after
(joinpoint joinpoint,object obj)
//替換環繞
//@around(value="mypointcut()")
//public object around(proceedingjoinpoint jp)throws throwable
//替換丟擲異常
@afterthrowing
(value=
"mypointcut()"
,throwing=
"e")
public
void
afterthrowing
(joinpoint jp1,throwable e)
//最終通知
@after
(value=
"mypointcut()"
)public
void
lastafter
(joinpoint jp2)
}
④目標類所在的包,@component只有在掃瞄包之後才會起作用
註解建立Aop切面程式設計
使用註解實現切點程式設計 看一下使用xml配置實現切面程式設計 dao層 dao 層 public class studentdao aspect切面類 切面類 public class studentaspect public void after 測試類test 測試類 public class...
Spring 切面程式設計AOP註解
aop aspect oriented programming 切面程式設計通過預編譯方式和執行期動態 實現程式功能的統一維護的一種技術,是spring框架中乙個重點內容也是函式式程式設計的一種衍生范型。在spring中使用aop的業務只需要關注自己業務本身,將日誌記錄 效能統計 安全控制 事務處理...
使用註解模式完成AOP程式設計
1.註解的含義 aspect 表示的是當前這個類 是乙個切面類 before 前置處理器 after 後置處理器 afterreturning 這個表示的是在返回值的時候 進行呼叫 afterthrowing 這個表示的是在丟擲異常的時候呼叫 around 環繞通知 pointcut 這個表示的是乙...