Spring AOP 的工作机制概览 Spring AOP 基于代理模式在运行时把横切逻辑织入目标对象:当从容器获取的 Bean 被调用时,实际执行的是代理对象的方法调用,代理在合适的连接点按切点匹配执行相应的通知,从而实现对业务代码的增强。Spring AOP 以方法为连接点,采用JDK 动态代理或CGLIB字节码增强来创建代理,默认优先使用 JDK 动态代理,目标类未实现接口时自动切换到 CGLIB。与 AspectJ 的编译期/类加载期织入不同,Spring AOP 属于运行期织入,更轻量、易用,适合大多数业务横切场景(如日志、事务、安全)。
核心概念与代理选择
从 Bean 创建到方法拦截的流程
通知执行顺序与环绕通知控制
快速上手与常见注意事项
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
@Aspect @Component
public class LogAspect {
@Pointcut("execution(* com.example.service.*.*(..))")
void pc() {}
@Around("pc()")
public Object around(ProceedingJoinPoint pjp) throws Throwable {
long start = System.currentTimeMillis();
try {
return pjp.proceed();
} finally {
System.out.println("耗时: " + (System.currentTimeMillis() - start) + "ms");
}
}
}
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。