自定义注解通过aop拦截用户访问信息并存入到数据库中

本文介绍了如何通过自定义注解和Spring AOP实现对带有特定注解的方法进行拦截,获取请求参数并记录日志。这种方案避免了直接在业务代码中插入日志代码,降低了代码侵入性。示例代码包括自定义注解、切面拦截、以及如何使用这些注解来记录用户访问信息。
摘要由CSDN通过智能技术生成

目地:

我们很多程序每天有大量用户访问,特别是一些增删改操作,如果每一笔操作都写一条SQL插入对程序的侵入太大了,但是这些操作又非常有必要保存。

方案:

这里考虑使用AOP拦截器,在接口请求时对@Logbefore的注解进行切面拦截,通过前置通知获取返回的对象,然后遍历对象中的请求的属性和参数进行记录。

环绕拦截请看自定义注解通过aop拦截用户访问信息并存入到数据库中(二)

前置拦截具体代码如下:

1,自定义一个前置Log注解



package com.hcmony.sword.aspect.before;

import com.hcmony.sword.aspect.around.LogAround;

import java.lang.annotation.*;

/**
 * <h3>方法执行之前操作日志记录</h3>
 * <p>如果想使用广告操作前后记录请使用{@link  LogAround}</p>
 *
 * @author hcmony
 * @since V1.0.0, 2018/02/07 15:22
 */
@Documented
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface LogBefore {

	/**
	 * @return 要记录系统的名称。
	 */
	String keyName();

	/**
	 * @return 操作类型
	 */
	String operType() default "";

	/**
	 * @return 操作人
	 */
	String user() default "";

}

2,切面拦截有这个注解的方法,对这个方法的参数进行输出,我这里是打印到控制台,后面通过ELK收集起来,进行分析处理。



package com.hcmony.sword.aspect.before;
import com.hcmony.sword.aspect.LogAspect;
import org.apache.commons.lang3.StringUtils;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.a
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值