扫码阅读
手机扫码阅读

Spring Boot 中的 AOP,到底是 JDK 动态代理还是 Cglib 动态代理?

63 2024-11-27

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

查看原文:Spring Boot 中的 AOP,到底是 JDK 动态代理还是 Cglib 动态代理?
文章来源:
江南一点雨
扫码关注公众号

摘要

松哥正在录制TienChin项目视频,使用Spring Boot和Vue3技术栈。

Java的动态代理

Java中的动态代理有两种实现方式:基于JDK的动态代理和基于Cglib的动态代理。基于JDK的代理要求对象有接口,而Cglib不需要。

Spring中的AOP实现

Spring中的AOP实现,如果代理对象有接口则使用JDK动态代理,没有接口则使用Cglib动态代理。

Spring Boot中的AOP实现

Spring Boot在2.0版本之前,根据application.properties中spring.aop.proxy-target-class属性的配置决定使用JDK还是Cglib代理。Spring Boot 2.0及之后版本,如果没有配置,默认使用Cglib代理。

实践

创建一个使用最新版Spring Boot的项目,通过简单的例子可以验证默认使用Cglib代理。若要使用JDK代理,需要在application.properties中设置spring.aop.proxy-target-class为false。

小结

Spring中的AOP默认根据有无接口使用JDK或Cglib代理。Spring Boot 2.0之后,默认使用Cglib代理,但可以通过配置改为JDK代理。

想要了解更多内容?

查看原文:Spring Boot 中的 AOP,到底是 JDK 动态代理还是 Cglib 动态代理?
文章来源:
江南一点雨
扫码关注公众号