If config it in xml:
package com.gvace.aop;
/*
* To define an Aspect
*
*/
public class SecurityHandler {
private void checkSecurity() {
System.out.println("Runned checkSecurity");
}
}
If with Annotation
package com.gvace.aop;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
/*
* To define an Aspect
*
*/
@Aspect
public class SecurityHandler {
//@Pointcut Describe the target functions
//So this function is ONLY JUST A FLAG, it will NEVER be called anyway
//(* add*(..)), means return any type, name likes "add*", parameter can be anything
// the addAddMethod function does not want parameter and return type
@Pointcut("execution(* add*(..))")
private void addAddMethod(){}
//define this Advice is run before target function
//And it applied to some @Pointcut described functions
@Before(value = "addAddMethod()")
//@After(value = "addAddMethod()")
private void checkSecurity() {
System.out.println("Runned checkSecurity");
}
}
Add a JoinPoint argument to get target class method information
package com.gvace.aop;
import org.aspectj.lang.JoinPoint;
/*
* To define an Aspect
*
*/
public class SecurityHandler {
//add a JoinPoint argument to get target class method information
private void checkSecurity(JoinPoint joinPoint){
System.out.println("Method name: "+joinPoint.getSignature().getName());
for(int i=0; i<joinPoint.getArgs().length; i++){
System.out.println(joinPoint.getArgs()[i]);
}
System.out.println("Runned checkSecurity");
}
}
No comments:
Post a Comment