@Pointcut 使用@annotation 带参数

2018-03-01 11:24:37来源:oschina作者:noob_fly人点击

分享
package com.noob.annotation;
/**
* 操作日志
*
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface OpLog {
/**
*
* 操作类型
*/
int opModule();
/**
*
* 是否批量
*/
String batch();
/**
*
* 操作来源(页面+操作)
*/
String source();
}
package com.noob.aspectj;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import com.noob.annotation.OpLog;
/**
* 操作日志的保存
* @author xiongwenjun 2018年2月27日 下午4:24:25
*/
@Aspect
@Slf4j
public class OpLogAspectj {

@Pointcut(value = "@annotation(com.noob.annotation.OpLog)")
public void methodPointcut(){

}

@Around(value= "methodPointcut()&& @annotation(opLog)" , argNames="opLog")
public Object around(ProceedingJoinPoint point, OpLog opLog) throws Throwable{
Object obj = null;
Object[] args = point.getArgs();

try {
obj = point.proceed(args);
} catch (Throwable e) {
log.error("【操作日志的保存】方法执行异常", e);
}
long endTime = System.currentTimeMillis();
MethodSignature signature = (MethodSignature) point.getSignature();
String methodName = signature.getDeclaringTypeName() + "." + signature.getName();
return obj;
}
}

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台