自定义注解

自定义实现日志注解

手动代码开始!
创建自定义日志注解@AutoLog

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface AutoLog {
	String value()
}

AOP实现注解想要的功能

@Slf4j
@Component
@Aspect
public class AutoLogAspect {
	@Autowired
	private HttpServletRequest request;
	
	@Pointcut("@annotation(com.yck.common.annotation.AutoLog)")
	public void pointCut(){
	}
	
	// 在切点运行前执行
	@Before(value = "pointCut()")
	public void doBefore(JoinPoint joinPoint) {
		MethodSignature signature = (MethodSignature)joinPoint.getSignature();
		Method method = signature.getMethod();
		AutoLog annotation = method.getAnnotation(AutoLog.class);
		if (null == annotation) return;
		// TODO 将日志写入数据库

		// 注解的value值
		// annotation.value();

		// 测试打印
		String methodName = method.getDeclaringClass().getSimpleName() + "." + method.getName();
		log.info("start:{},method:{},url:{}", methodName, annotation.value(), request.getRequestURI());
	}
	
	// 在切点运行后,无异常时执行
	@AfterReturning(value = "pointCut()", returning = "result")
	public void afterReturn(JoinPoint joinPoint, Object result) {
		MethodSignature signature = (MethodSignature)joinPoint.getSignature();
		Method method = signature.getMethod();
		AutoLog annotation = method.getAnnotation(AutoLog.class);
		if (null == annotation) return;
		
		// 测试打印
		String methodName = method.getDeclaringClass().getSimpleName() + "." + method.getName();
		log.info("end:{},result:{}", methodName, result);
	}
}

@AutoLog作用在对应的接口上即可

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值