本文繼續上篇講述一下比較複雜點的aop例子,先新建乙個控制台專案,然後同樣先在nuget中搜尋安裝kingaop到專案中
1、專案結構
2 、定義乙個登入實體類user和loggingaspect切面日誌類
publicclass
user
public
string name
public
string pwd
public
string state
public system.datetime logintime
}
///3、定義乙個登入業務類login,並且繼承idynamicmetaobjectprovider類///建立乙個日誌切面處理類
/// public
class
loggingaspect : onmethodboundaryaspect
public
override
void
onexception(methodexecutionargs args)
public
override
void
onsuccess(methodexecutionargs args)
public
override
void
onexit(methodexecutionargs args)
//////
aop處理登入日誌邏輯,只需在此進行修改即可,無需修改被切面的處理類
/// ///
//////
private
string createlogdata(string
methodstage, methodexecutionargs args)
", args.method));
foreach (var argument in
args.arguments)
else
= ; ",
property.name, property.getvalue(argument,
null
)); }}}
return
str.tostring();}}
///4、接下來就是測試**,如下///該類需要繼承idynamicmetaobjectprovider,因為kingaop是基於動態型別進行操作和繫結的,如不繼承是不會進入到刷選器中的相應事件裡
///登入功能,只需新增乙個loggingaspect即可實現日誌功能,達到業務邏輯和通用處理邏輯的分離
/// public
class
login : idynamicmetaobjectprovider
else
}//////
該類必須實現idynamicmetaobjectprovider的getmetaobject方法
/// ///
///public
dynamicmetaobject getmetaobject(expression parameter)
}
classprogram
;test.loginvaldate(entity);
console.read();}}
使用註解實現AOP
xml標頭檔案中加入 xmlns context xsi schemalocation spring context.xsd 宣告哪些包下有註解 當有兩個以上的包時,用 隔開 在demo類中加入 component 在方法上新增 pointcut 定義切點 component public clas...
使用註解實現AOP
1.匯入jar包 與用介面實現 的jar包相同 2.配置 a.將業務類和通知類納入springioc容器 b.在容器中開啟註解對aop的支援 c.將類使用註解方式 component 放入ioc容器中時,要將該類所在的包新增到掃瞄器中 3.編寫通知類 1.加入註解 aspect,不用再實現介面 但是...
Scala 使用Curry實現AOP
業餘時間學了學scala,至今有3個多月了.這兩天看到群 54813143 裡有同學討論aop,於是就想出了如下實現 trait裡沒有任何抽象的值或方法 trait aop def add t function1 string,any targets t targets 收集所有被攔截的方法 函式物...