切面表示式:
execution
([修飾符] 返回值型別 包.類.方法(引數列表));
1:完全寫法
execution
(public
void com.syy.xml_aop.userimpl.
work
(int))
;2:-修飾符省略
execution
(void com.syy.xml_aop.userimpl.
work
(int))
;3:簡化2
-返回值型別寫萬用字元
execution
(* com.syy.xml_aop.userimpl.
work
(int))
;4:簡化3
-包名寫萬用字元
execution(*
*.*.*.userimpl.
work
(int))
;5:簡化4
-包名萬用字元簡化
execution(*
*..userimpl.
work
(int))
;6:簡化5
-類名萬用字元
execution(*
*..*.work
(int))
;7:簡化6
-引數寫萬用字元
execution(*
*..*.work(.
.));
<
aop:config
>
<
aop:pointcutid=
"work"
expression
="execution( * com.syy.service..*.*(..))"
/>
<
aop:aspect
ref=
"advice"
>
<
aop:after
method
="writelog"
pointcut-ref
="work"
/>
aop:aspect
>
aop:config
>
簡化
joinpoint.proceed(); //切到原來的目標方法,進行執行
public
class
advice
public
void
before()
public
void
after()
public
void
afterreturn()
public
void
afterthrow()
}
<
aop:config
>
<
aop:pointcutid=
"all"
expression
="execution( * com.wzx.service..*.*(..))"
/>
<
aop:aspect
ref=
"advice"
>
<
aop:before
method
="before"
pointcut-ref
="all"
/>
<
aop:after-returning
method
="afterreturn"
pointcut-ref
="all"
/>
<
aop:after-throwing
method
="afterthrow"
pointcut-ref
="all"
/>
<
aop:after
method
="after"
pointcut-ref
="all"
/>
aop:aspect
>
aop:config
>
public
void
arround
(proceedingjoinpoint point )
catch
(throwable e)
finally
}
<
aop:config
>
<
aop:pointcutid=
"all"
expression
="execution( * com.wzx.service..*.*(..))"
/>
<
aop:aspect
ref=
"advice"
>
<
aop:around
method
="arround"
pointcut-ref
="all"
/>
aop:aspect
>
aop:config
>
@component
@aspect
public
class
advice
//try
// @before("execution( * com.wzx.service..*.*(..))")
public
void
before()
//@afterreturning("execution( * com.wzx.service..*.*(..))")
public
void
afterreturn()
//catch(exception e)
// @afterthrowing("execution( * com.wzx.service..*.*(..))")
public
void
afterthrow()
//finally
// @after("execution( * com.wzx.service..*.*(..))")
public
void
after()
@around
("execution( * com.wzx.service..*.*(..))"
)public
void
arround
(proceedingjoinpoint point )
catch
(throwable e)
finally
}}
<?xml version="1.0" encoding="utf-8"?>
xmlns
=""xmlns:xsi
=""xmlns:context
=""xmlns:aop
=""xsi:schemalocation
=" /spring-beans.xsd /spring-context.xsd /spring-aop.xsd"
>
<
context:component-scan
base-package
="com.wzx.service"
/>
<
aop:aspectj-autoproxy
/>
beans
>
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 面向切面程式設計
spring aop aop aspect orient programming 也就是面向切面程式設計 可以這樣理解,物件導向程式設計 oop 是從靜態角度考慮程式結構,面向切面程式設計 aop 是從動態角度考慮程式執行過程。在日常生活中,會遇到各種各樣的中介機構,比如獵頭公司,律師事務所,婚姻介...
Spring AOP面向切面程式設計
最近在系統中需要實現使用者某些操作新增積分,希望實現對系統現有的 進行最小嵌入,因此使用spring aop的切面程式設計將很好實現該需求,達到最小耦合度。在spring aop中的通知都是針對方法層級進行通知,相對與struct中針對類層級通知,具有更好的靈活性。方法攔截 methodinterc...