【问题标题】:Spring boot - Unable to proxy interface-implementing method - WARN messageSpring boot - 无法代理接口实现方法 - WARN 消息
【发布时间】:2021-04-09 23:47:54
【问题描述】:

伙计们。 从 Spring boot 1.5.x 开始,我收到以下 WARN 消息:

     :: Spring Boot ::        (v2.0.0.RELEASE)

2018-03-17 18:58:18.546  WARN 27877 --- [  restartedMain] o.s.a.f.CglibAopProxy                    : Unable to proxy interface-implementing method [public final void org.springframework.web.context.support.WebApplicationObjectSupport.setServletContext(javax.servlet.ServletContext)] because it is marked as final: Consider using interface-based JDK proxies instead!
2018-03-17 18:58:18.551  WARN 27877 --- [  restartedMain] o.s.a.f.CglibAopProxy                    : Unable to proxy interface-implementing method [public final void org.springframework.context.support.ApplicationObjectSupport.setApplicationContext(org.springframework.context.ApplicationContext) throws org.springframework.beans.BeansException] because it is marked as final: Consider using interface-based JDK proxies instead!
2018-03-17 18:58:18.937  WARN 27877 --- [  restartedMain] o.s.a.f.CglibAopProxy                    : Unable to proxy interface-implementing method [public final void org.springframework.web.context.support.WebApplicationObjectSupport.setServletContext(javax.servlet.ServletContext)] because it is marked as final: Consider using interface-based JDK proxies instead!
2018-03-17 18:58:18.938  WARN 27877 --- [  restartedMain] o.s.a.f.CglibAopProxy                    : Unable to proxy interface-implementing method [public final void org.springframework.context.support.ApplicationObjectSupport.setApplicationContext(org.springframework.context.ApplicationContext) throws org.springframework.beans.BeansException] because it is marked as final: Consider using interface-based JDK proxies instead!
2018-03-17 18:58:19.034  WARN 27877 --- [  restartedMain] o.s.a.f.CglibAopProxy                    : Unable to proxy interface-implementing method [public final void org.springframework.web.context.support.WebApplicationObjectSupport.setServletContext(javax.servlet.ServletContext)] because it is marked as final: Consider using interface-based JDK proxies instead!
2018-03-17 18:58:19.035  WARN 27877 --- [  restartedMain] o.s.a.f.CglibAopProxy                    : Unable to proxy interface-implementing method [public final void org.springframework.context.support.ApplicationObjectSupport.setApplicationContext(org.springframework.context.ApplicationContext) throws org.springframework.beans.BeansException] because it is marked as final: Consider using interface-based JDK proxies instead!
2018-03-17 18:58:19.136  WARN 27877 --- [  restartedMain] o.s.a.f.CglibAopProxy                    : Unable to proxy interface-implementing method [public final void org.springframework.web.context.support.WebApplicationObjectSupport.setServletContext(javax.servlet.ServletContext)] because it is marked as final: Consider using interface-based JDK proxies instead!
2018-03-17 18:58:19.136  WARN 27877 --- [  restartedMain] o.s.a.f.CglibAopProxy                    : Unable to proxy interface-implementing method [public final void org.springframework.context.support.ApplicationObjectSupport.setApplicationContext(org.springframework.context.ApplicationContext) throws org.springframework.beans.BeansException] because it is marked as final: Consider using interface-based JDK proxies instead!

我在依赖层次结构中没有 CGLIB。我只使用 DI 接口,并且我尝试禁用 @EnableGlobalMethodSecurity(securedEnabled = true) 以及与之相关的所有内容,但仍然没有更改。(我已经阅读了控制器类中的 MethodSecurity 和 @Secured 注释可能导致这个警告,但似乎我从另一个地方得到它们。 如何知道我从哪里收到这些警告?

【问题讨论】:

    标签: spring spring-boot cglib


    【解决方案1】:

    问题在于类级别的一些@Transactional 注释。在我将它们放在接口上之后(存储库 - 我正在使用 spring 数据)一切都很好:)

    【讨论】:

      【解决方案2】:

      检查@Transactional注解后,确保你将@Repository注解直接放到repository interface。就我而言,我做了以下事情:

      1. 从我的 DAO 类中删除了 @Transactional@Repository
      2. @Repository放到我的repo界面
      3. @Component 放入我的DAO 课程

      有关注释的更多信息,请参阅Spring Boot + Annotations

      【讨论】:

        【解决方案3】:

        根据报告的问题,我遇到了同样的问题,例如使用 final 实现接口的方法。

        从具体类(Bean)中,如果我们从方法中删除 final,也解决了同样的问题。

        参考: https://github.com/spring-projects/spring-boot/issues/8974

        【讨论】:

          猜你喜欢
          • 2018-02-17
          • 2019-10-13
          • 2020-04-27
          • 1970-01-01
          • 2020-05-09
          • 2015-07-18
          • 2018-11-27
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多