原生AspectJ
AspectJ 是为了解决面向切面的编程而诞生的,通过它可以在Java应用程序中织入横切关注点,比如日志、性能分析、安全检查等。AspectJ 定义了一套自己的语法,拥有自己的编译器。
AspectJ 是为了解决面向切面的编程而诞生的,通过它可以在Java应用程序中织入横切关注点,比如日志、性能分析、安全检查等。AspectJ 定义了一套自己的语法,拥有自己的编译器。
AOPhttps://pdai.tech/md/spring/spring-x-framework-aop.htmlhttps://tobebetterjavaer.com/springboot/aop-log.htmlAOP, Aspect-Oriented Programming 即面向切面的编程. AOP 的主要目的就是对业务逻辑的一些公共部分进行剥离解耦,是对面向对象编程(Object-O
JDK 动态代理jdk 提供了动态代理的 API:Interface proxy = (Interface) Proxy.newProxyInstance(Interface.class.getClassLoader(), new Class[]{Interface.class}, new DynamicProxyHandler(targetObject));targetObject 为要被代理的
前言Spring 优雅停机在某些业务场景下是至关重要的,比如你的项目里有MQ 的消费.消费过程中要去调用外部服务的接口查询所需数据(Feign调用).消费处理完成后,要发送一个 MQ 通知消息.在停机时,如果不考虑关闭顺序,那么就会出现你还在消费消息,但是外部的接口已经调不通了,或者是你已经处理完成,通知消息却发不出去了,在某些情况下,可以通过消息重试等机制来解决,但是在与资金相关的项目中,停机顺
前言在上下游数据对账时,发现存入数据库的时间跟发送给下游的时间上有差异,比如上游存入 MySQL 数据库的时间为:2023-03-01 00:00:00,(数据库的字段类型为 datetime)而下游接收到的时间为 2023-02-28 00:00:00. 执行顺序像下图这样:伪代码如下:// new 一个时间 Date createTime = new Date(); // insert 入库