メソッドのフック
Posted feedbacks - Groovy
ProxyMetaClass を利用しました。 ただし、指定したクラスの ・コンストラクタ ・メソッド の呼び出しの両方にインターセプタが実行されるので、 対象メソッドをどれにするか列挙する必要がありますね。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | class MyClass{
def MyClass(s){
println "CONSTRUCTING"
}
def sayHello(name){
println "Hello " + name
}
}
class MyClassInterceptor implements Interceptor{
Object beforeInvoke(Object object, String methodName, Object[] arguments){
if( methodName == 'sayHello' ){
println " BEFORE"
}
}
boolean doInvoke(){ true }
Object afterInvoke(Object object, String methodName, Object[] arguments,
Object result){
if( methodName == 'sayHello' ){
println " AFTER"
}
result
}
}
def proxy= ProxyMetaClass.getInstance( MyClass )
proxy.interceptor= new MyClassInterceptor()
proxy.use{
def invoice= new MyClass('trade')
invoice.sayHello('GENZOU ')
}
|


todogzm
#6017()
Rating0/8=0.00
例えば、あるクラスのあるメソッドを実行する前に他の処理を呼びたい(例えばログやトランザクション開始など)。 また、そのメソッドの終了後にも何らかの後処理を呼びたい(トランザクション終了など)。
そのような、メソッドに対するフック処理を書いてください。 ライブラリを使用してメソッドのフックを実現した場合は ライブラリの名前を紹介してくれると助かります。
[ reply ]