面向方面程式設計四種常用形式總結

2021-05-22 19:10:53 字數 2397 閱讀 5270

advisor:

切點:例項

public class test extentds dynamicmethodmatherpointcut{

private static listspecialclientlist=new arraylist();

static{

specialclientlist.add("tom");

specialclientlist.add("lilei");

public classfileter getclassfileter(){

return new classfileter(){

public boolean matches(class clazz){

system.out.println("呼叫getclassfilter()對"+clazz.getname()+"做靜態檢查");

return waiter.class.isassignableform(clazz);

public boolean matches(method method,class clazz){

system.out.println("對"+method.getname()+"做靜態檢查");

return "greeto".equals(method.getname());

public boolean mathes(method method,class clazz,object args){         //對連線點入參繫結

system.out.println("對"+method.getname()+"做動態檢查");

string clientname=(string)args[0];

return specialclientlist.contains(clientname);

@aspectj

切點:支援aspectj切點表示式語法,可以通過@pointcut註解定義命名切點

切點寫法:    @切面型別("切點函式(切點表示式)")

切面:帶有切點註解方法的類組成

常見的切面型別:@bfore @afterreturnint @around @afterthrowing @after @declareparents

常見的切點函式: @annotation() execution() args() @args() within()@within() @target() target() this()               

連線點方法入參繫結:1) 可以通過joinpoint,proceedingjoinpoint連線物件   2)使用切點函式指定引數名繫結

連線點方法返回值: 1)在後置增強中,使用@afterreturning的returning成員繫結方法返回值

切點:通過

或者切面:

切點:通過aop:advisor 的pointcut屬性指定

切面下表為四種切面方法常用的增強型別

@aspectj

advisor

前置增強

@before

methodbeforeadvice

同左面後置增強

@afterreturnint

afterreturningadvice

同左面環繞增強

@around

methodinterceptor

同左面丟擲異常增強

@afterthrowing

throwsadvice

同左面final增強

@after

無對應介面

同左面引介增強

@declareparents

introductioninterceptor

同左面切面組成

各種增強註解和增強方法組成切面類

aop:config配置切點和增強屬性

通過bean的advice和pointcut屬性配置

通過aop:config 配置

織入(方法一)aspectjproxyfactory類,該類常用方法:

settarget();

addaspect();

(proxyclass)getproxy();

(方法二)

由容器依據切點表示式自動織入匹配的類中,這個過程不需要使用者操作

proxyfactorbean類,配置interceptornames,target,proxyinte***ces,

proxytargetclass(true/false)屬性,有容器產生供使用者使用的**物件。同

模組四種形式

模組是一系列功能的集合體,而函式是某乙個功能的集合體,因此模組可以看成是一堆函式的集合體。乙個py檔案內部就可以放一堆函式,因此乙個py檔案就可以看成乙個模組。如果這個py檔案的檔名為module.py,模組名則為module 在python中,總共有以下四種形式的模組 自定義模組 如果你自己寫乙個...

C語言四種常用指標形式

1.陣列指標 本質 指標 形容 指向陣列的指標 陣列的操作 核心是針對元素的 形式 陣列的元素型別 指標變數名 eg char a 10 char p p a 指標指向陣列的首元素 int b 2 5 int w 5 指標,指向型別 int 5 指向的陣列元素型別應該是int 5 可以用來指向乙個二...

css的四種形式

一 行內式 行內式是最直接的一種方式,它直接對html標記使用style屬性,然後直接將 寫進去。正文內容1 正文內容2 正文內容3 行內式是最簡單的一種方式,它只需要為每乙個標記設定style屬性。但是後期維護成本高,網頁過於肥胖。不建議使用。二 內嵌式 內嵌式就是將css寫在之間,並且用標記進行...