当前位置: 首页 > 图灵资讯 > 技术篇> 若依框架中这段日志AOP代码如何理解?

若依框架中这段日志AOP代码如何理解?

来源:图灵教育
时间:2024-12-02 19:30:26

若依框架中这段日志aop代码如何理解?

请问若依的这段日志aop代码是什么意思啊?

问题代码:

@Before(value = "@annotation(controllerLog)")
public void boBefore(JoinPoint joinPoint, Log controllerLog) {
    TIME_THREADLOCAL.set(System.currentTimeMillis());
}

回答:

这段代码是一个 aspectj aspect 织入点,它将在被 @log 注解的方法执行之前执行。

详细说明:

  • @before:表示这是一个 before 建议,将在目标方法执行前被触发。
  • value = "@annotation(controllerlog):指定它将拦截被 @controllerlog 注解的方法。 @controllerlog 是一个自定义注解(通常用于记录日志),用于标记需要记录的 controller 方法。
  • joinpoint joinpoint:表示当前被执行的连接点(方法调用)。
  • log controllerlog:注解的参数,代表了当前方法的 @controllerlog 注解。
  • time_threadlocal.set(system.currenttimemillis()):记录当前时间,以便在方法执行后计算执行时间并将其存储到数据库中。

其他问题解答:

  • 在 spring aop 中,@annotation 的括号中可以填写全限定类名,也可以填写形参代表的注解类型,两者等效。
  • controllerlog 这个变量是由框架自动注入的,它表示当前方法上的 @controllerlog 注解。虽然业务方法上使用的是 @log 注解,但 @log 注解会自动转化为 @controllerlog 注解。
  • idea 可以根据 aspectj 的语法规则自动推断出 controllerlog 变量的类型。

以上就是若依框架中这段日志AOP代码如何理解?的详细内容,更多请关注图灵教育其它相关文章!