You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot 何处将AOP代理设置为CGLib而非JDK动态代理?

Spring Boot默认启用CGLib代理的配置位置解析

问题背景

在Spring Boot项目中使用@Aspect注解实现切面时,无需手动添加@EnableAspectJAutoProxy注解,Spring Boot会自动启用AOP功能。但调试切面实例时,发现其是CGLib代理对象(示例:MyTestAspect$$EnhancerBySpringCGLib$$xxxxxxxx@1234)。而原生Spring的@EnableAspectJAutoProxy注解默认proxyTargetClass=false,即默认使用JDK动态代理,因此需要明确Spring Boot何处修改了这个默认配置。

配置位置说明

Spring Boot通过两个核心自动配置类,默认将spring.aop.proxy-target-class设置为true,从而启用CGLib代理:

  • TransactionAutoConfiguration.java:事务相关的自动配置类中包含该属性的配置逻辑
  • AopAutoConfiguration.java:AOP功能的核心自动配置类中同样配置了该属性

自定义代理类型的方式

如果需要切换回JDK动态代理,只需在项目的配置文件(application.properties或application.yml)中手动覆盖配置:

  • properties格式:
    spring.aop.proxy-target-class=false
    
  • yml格式:
    spring:
      aop:
        proxy-target-class: false
    

内容的提问来源于stack exchange,提问作者Abe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 14:55:30