很高兴又和大家见面了。 大家好,我是小铁。 一个幽默且有感染力的csdn博主。
过多的废话我也不赘述了。 今天我来讲讲 springboot 中如何应用aop来记录日志
如果有的同学不清楚什么是aop,请直接跳转这里。 AOP是什么? (请不懂的同学直接跳转学习去,本片文章不会过多的讲述)
前言:aop解决的这个办法有很多种,在这里我给大家介绍两种最简单的。(但是我只会讲解,最方便也是企业最常用的办法)
一、自定义注解(这里不做过多的赘述) 传送门
二、扫描包的方式。传入的参数在请求头里面(企业常用)
废话不多说,咱们直接上干货。(中间我会为大家讲解原理,先跟随我上代码)
@Aspect
@Configuration
@Slf4j
public class SysLogAspect {
//定义切点 @Pointcut
@Pointcut("execution (* com.szht.jxgl.controller..*.*(..)) ") //扫描包的路径
public void logPoinCut() {}
//通知
@Before("logPoinCut()")
public void doBefore(JoinPoint joinPoint){
ServletRequestAttributes requestAttributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
HttpServletRequest request = requestAttributes.getRequest();
HttpSession session = request.getSession();
String mc = request.getHeader("logOperation"); //获取到前端传输过来的值
try {
String ss = "";
ss = URLDecoder.decode(mc,"UTF-8"); //进行解密,因为前端是加密过来的(后面我会给大家讲述为啥加密)
log.error("前置通知结束");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
@AfterReturning("logPoinCut()")
public void doAfterReturning(JoinPoint joinPoint){
log.error("--------执行切入方法--------");
log.error("---------一般进行插入的操作");
}
}
我把我大部分的逻辑全都删除了,只留下最简单的操作 大家可以看一下。(你们先看,作者我先喝口茶冷静一下。)
aop这个东西简单来说,有几个组成点需要注意一下。
一、Aspect (切面): Aspect 声明类似于 Java 中的类声明,在 Aspect 中会包含着一些 Pointcut 以及相应的 Advice。
二、Joint point(连接点): 表示在程序中明确定义的点,典型的包括方法调用,对类成员的访问以及异常处理程序块的执行等等,它自身还可以嵌套其它 joint point。
三、Pointcut (切点): 表示一组 joint point,这些 joint point 或是通过逻辑关系组合起来,或是通过通配、正则表达式等方式集中起来,它定义了相应的 Advice 将要发生的地方。
四、Advice (增强) : Advice 定义了在 Pointcut 里面定义的程序点具体要做的操作,它通过 before、after 和 around 来区别是在每个 joint point 之前、之后还是代替执行的代码。
五、Target (目标对象): 织入 Advice 的目标对象.。
六、Weaving (织入): 将 Aspect 和其他对象连接起来, 并创建 Adviced object 的过程
速记方法:Aspect就是找茬(pointcut)揍你(target)一顿(advice),一群欠揍的的人(join point)
其他的科普知识,你们可以去网上找找资料。很简单的就找到了,在这里我就不一一赘述了。
前端
前端的话就比较简单了,搞一个头部请求。然后把你需要的东西进行加密处理。因为heard当中无法传输中文。
let ss = encodeURIComponent("部门计算");
axios.post(url, data, {headers : {'logOperation': ss}}).then((response) => {
//todo.. 这里省略
}).catch((error) => {
//todo.. 这里省略
});
好了,今天的文章到此结束了。喜欢小铁的同学请给我点点赞吧。
愿。你在他乡也能勇往直前,我们终将在顶峰相见。 —《小铁经典语录》