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

Spring Boot升级至2.0后出现CglibAopProxy代理final方法警告求助

解决Spring Boot 2.0升级后CglibAopProxy的final方法代理警告

嘿,这个警告我在升级Spring Boot的时候也碰到过,本质是CGLIB代理的局限性——它没法代理被标记为final的方法,而WebApplicationObjectSupport的setServletContext刚好是个final方法,当你的类继承了这个类且被AOP代理时,就会触发这个警告。下面给你两个实用的解决思路:

方法一:切换为JDK动态代理

JDK代理基于接口实现,不会受final方法的限制。你可以通过两种方式配置:

  • 在你的AOP配置类上添加注解:@EnableAspectJAutoProxy(proxyTargetClass = false),其中proxyTargetClass=false会强制使用JDK代理(Spring Boot中默认如果类有接口会自动用JDK,但有时配置会被改成CGLIB)。
  • 在application.properties(或application.yml)里添加配置:
    spring.aop.proxy-target-class=false
    
    注意:使用JDK代理的前提是你的被代理类必须实现至少一个接口,不然JDK代理无法生效。

方法二:忽略警告(调整日志级别)

如果你的业务逻辑不需要代理那个final方法,或者没法切换到JDK代理(比如类没实现接口),这个警告其实不会影响应用运行,只是看着碍眼。你可以通过调整日志级别隐藏它:

  • 若使用logback,在logback.xml里添加:
    <logger name="org.springframework.aop.framework.CglibAopProxy" level="ERROR"/>
    
  • 若用application.properties配置日志:
    logging.level.org.springframework.aop.framework.CglibAopProxy=ERROR
    
    这样就只会显示这个类的ERROR级别日志,WARN会被过滤掉。

补充一句:这个警告只是Spring的友好提示,不会导致功能异常,要是不介意日志里有这条WARN,也可以直接忽略它~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:24:29