SpringBoot【十五(实战篇二)】基于AOP实现自定义注解且记录接口日志!

一、前言🔥

环境说明:Windows10 + Idea2021.3.2 + Jdk1.8 + SpringBoot 2.3.1.RELEASE

    上一期我们是简单造了一个自定义注解并且玩过了它的哪几种通知类型,对吧,ok,那这一期呢,我就具体带着大家玩一个实际项目中遇到比较多见的业务场景,就如标题所言,**记录业务日志然后保存入库,**而我们的实现方式则正是通过aop的思想来实现。

想必很多小伙伴可能就会问了,”我为啥要以自定义注解的方式进行日志记录呢?我难道不可以通过封装一个日志记录的工具类然后进行统一调用么?“。”也没问题,这种就是以前还没玩aop的时候玩的思路,”

       我为什么要舍弃这种思路而使用aop切面的思想呢?其实啊😱,相比你在每个Controller接口方法上都加上你的记录日志方法的方式,维护成本过高吧,代码也非常冗余,基本每个业务接口都得加一遍,人工成本也过大。

       但是你使用aop就不一样了🧐,它耦合性低,能使业务处理和切面处理分开开发,扩展和修改方面,当引入了注解方式时,使用起来更加方便,你需要使用的时候,只需要在该方法或者整个类上,加上你自定义的注解即可。就能轻松实现你所谓的记录接口日志功能。

       是不是有点感受到它的魅力了🤓,那接下来我就带着大家具体来实现一个通过aop实现记录接口日志的业务场景吧。

👦二、具体实现

1、数据库新增一张log_info表

如下是我从本地数据库导出来的,给大家作为参考哈。

CREATE TABLE `log_info` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增id',
  `type` varchar(255) DEFAULT NULL COMMENT '日志类型',
  `response_code` varchar(255) DEFAULT NULL COMMENT '接口返回状态码',
  `operate_time` datetime DEFAULT NULL COMMENT '请求时间',
  `spend_time` bigint(255) DEFAULT NULL COMMENT '消耗时间',
  `url` varchar(255) DEFAULT NULL COMMENT 'url',
  `body` varchar(255) DEFAULT NULL COMMENT '请求体',
  `ip` varchar(255) DEFAULT NULL COMMENT 'ip',
  `query` varchar(255) DEFAULT NULL COMMENT '查询参数',
  `exception` varchar(255) DEFAULT NULL COMMENT '异常信息',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2、定义LogInfo实体

/**
 * 系统日志实体
 *
 * @Author luoYong
 * @Date 2021-08-05 15:38
 */
@TableName("log_info")
@Data
@ApiModel(value = "系统日志实体", description = "系统日志实体")
public class LogInfo extends BaseEntity {

   private static final long serialVersionUID = 1L;

   @ApiModelProperty(value = "主键id 自增列")
   @TableId(value = "id", type = IdType.AUTO)
   private Integer id;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值