一.簡述下joinpoint在不同情況下的不同:
1.在around中可以用,此時可以執行被包裹的代碼,可以根據情況來判斷是否執行被包裹的代碼,以實現控制的作用。
public void around(ProceedingJoinPoint joinpoint) {
joinpoint.proceed();
}
2.別的用,常用於做記錄之用,不能控制被包裹的代碼是否執行。
public void before(JoinPoint joinpoint) {
}
主要區別:在於是否能控制被包裹的代碼。
二.joinpoint如何查看類調用情況:
joinpoint.getArgs();//輸入的參數列表
joinpoint.getTarget().getClass().getName();//類全路徑
joinpoint.getSignature().getDeclaringTypeName();//接口全路徑
joinpoint.getSignature().getName();//調用的方法
三.什麼是Signature
public interface Signature
Represents the signature at a join point. This interface parallels java.lang.reflect.Member
.
This interface is typically used for tracing or logging applications to obtain reflective information about the join point, i.e. using the j2se 1.4java.util.logging
API
aspect Logging { Logger logger = Logger.getLogger("MethodEntries"); before(): within(com.bigboxco..*) && execution(public * *(..)) { Signature sig = thisJoinPoint.getSignature(); logger.entering(sig.getDeclaringType().getName(), sig.getName()); } }