5
Grailsプロジェクトでカスタムロギングアノテーションを作成したいとします。Grailsを使用したAOP
マイコード:
class MyService{
@AuditLog
def method1() {
println "method1 called"
method2()
}
@AuditLog
def method2() {
println "method2 called"
}
}
インターセプター:
class AuditLogInterceptor implements MethodInterceptor {
@Override
Object invoke(MethodInvocation methodInvocation) throws Throwable {
println "${methodInvocation.method}"
return methodInvocation.proceed();
}
}
春:configと
aop {
config("proxy-target-class": true) {
pointcut(id: "auditLogInterceptorPointcut", expression: "@annotation(xxx.log.AuditLog)")
advisor('pointcut-ref': "auditLogInterceptorPointcut", 'advice-ref': "auditLogInterceptor")
}
}
auditLogInterceptor(AuditLogInterceptor) {}
結果:
public java.lang.Object xxx.MyService.method1()
method1 called
method2 called
方法2のアノテーションの火災も見たいと思います。私は何が欠けていますか?
ニースの洞察! Grailsが同じサービスクラスのメソッドへの呼び出しをプロキシクラスに委譲するいくつかの魔法を提供するなら、それは素晴らしいことだと思います。 –