AOP使用案例

文章描述了一个使用SpringAOP技术,结合JWT进行用户登录验证,并在方法执行前后记录详细操作日志的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//加入bean
@Component
//指定这是一个aop类
@Aspect

@Slf4j
public class AOPlogin {

    @Autowired
    logrizhi diaoyong;

    //获取传递过来jwt令牌
    @Autowired
   HttpServletRequest jwtlog ;
    
//@annotation(* com.example.tlias.AOPbao.loginin
//    @Pointcut("@annotation(* com.example.tlias.sevicechuli.mylog")
    @Order(1)
    @Around("@annotation(com.example.tlias.AOPbao.loginin)")//切入点表达式
    //加入ProceedingJoinPoint joinPoint  表示那个类需要被AOP动态代理
    public Object aopp(ProceedingJoinPoint joinPoint) throws Throwable {

       //1.获取前端传递过来的jwt令牌"token"参照接口文档
        String token = jwtlog.getHeader("token");

        //2.解析jwt令牌
        Claims pase = jwttuil.pase(token);

        //3.获取jwt令牌里面传递的id属性
        Integer id = (Integer) pase.get("id");

       //获取当前操作时间
        LocalDateTime now = LocalDateTime.now();
        
        //获取目标类名fdaanhuan
        String name = joinPoint.getTarget().getClass().getName();
        log.info("获取目标类名"+name);

        //获取操作方法名 com.example.tlias.conller.conllemp
        String name1 = joinPoint.getSignature().getName();

        log.info("操作方法名"+name1);

        //获取目标方法形参数
        Object[] args = joinPoint.getArgs();
        String s = Arrays.toString(args);

        long l = System.currentTimeMillis();

        //调用目标方法
        Object proceed = joinPoint.proceed();

        //把返回值变成json格式字符串
        String s1 = JSONObject.toJSONString(proceed);

        long I2 = System.currentTimeMillis();

        long tmemsj = I2-l;

        OperateLog operateLog = new OperateLog(null,id,now,name,name1,s,s1,tmemsj );

        diaoyong.insertadd(operateLog);

        return proceed;

    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值