【问题标题】:org.springframework.aop.framework.Cglib2AopProxy WARN - Unable to proxy methodorg.springframework.aop.framework.Cglib2AopProxy WARN - 无法代理方法
【发布时间】:2018-02-17 02:22:34
【问题描述】:

我的 web 项目部署在 tomcat 中,并且在 final 方法中出现了一些警告,spring 和 hibernate 代理是什么,是什么导致了这个问题?

2017-09-08 16:01:32,548 org.springframework.aop.framework.Cglib2AopProxy WARN  - Unable to proxy method [public final org.hibernate.SessionFactory org.springframework.orm.hibernate3.support.HibernateDaoSupport.getSessionFactory()] because it is final: All calls to this method via a proxy will be routed directly to the proxy.
2017-09-08 16:01:32,548 org.springframework.aop.framework.Cglib2AopProxy WARN  - Unable to proxy method [public final void org.springframework.orm.hibernate3.support.HibernateDaoSupport.setSessionFactory(org.hibernate.SessionFactory)] because it is final: All calls to this method via a proxy will be routed directly to the proxy.
2017-09-08 16:01:32,548 org.springframework.aop.framework.Cglib2AopProxy WARN  - Unable to proxy method [public final org.springframework.orm.hibernate3.HibernateTemplate org.springframework.orm.hibernate3.support.HibernateDaoSupport.getHibernateTemplate()] because it is final: All calls to this method via a proxy will be routed directly to the proxy.
2017-09-08 16:01:32,548 org.springframework.aop.framework.Cglib2AopProxy WARN  - Unable to proxy method [public final void org.springframework.orm.hibernate3.support.HibernateDaoSupport.setHibernateTemplate(org.springframework.orm.hibernate3.HibernateTemplate)] because it is final: All calls to this method via a proxy will be routed directly to the proxy.
2017-09-08 16:01:32,548 org.springframework.aop.framework.Cglib2AopProxy WARN  - Unable to proxy method [public final void org.springframework.dao.support.DaoSupport.afterPropertiesSet() throws java.lang.IllegalArgumentException,org.springframework.beans.factory.BeanInitializationException] because it is final: All calls to this method via a proxy will be routed directly to the proxy.
2017-09-08 16:01:32,995 org.springframework.aop.framework.Cglib2AopProxy WARN  - Unable to proxy method [public final org.hibernate.SessionFactory org.springframework.orm.hibernate3.support.HibernateDaoSupport.getSessionFactory()] because it is final: All calls to this method via a proxy will be routed directly to the proxy.
2017-09-08 16:01:32,995 org.springframework.aop.framework.Cglib2AopProxy WARN  - Unable to proxy method [public final void org.springframework.orm.hibernate3.support.HibernateDaoSupport.setSessionFactory(org.hibernate.SessionFactory)] because it is final: All calls to this method via a proxy will be routed directly to the proxy.
2017-09-08 16:01:32,995 org.springframework.aop.framework.Cglib2AopProxy WARN  - Unable to proxy method [public final org.springframework.orm.hibernate3.HibernateTemplate org.springframework.orm.hibernate3.support.HibernateDaoSupport.getHibernateTemplate()] because it is final: All calls to this method via a proxy will be routed directly to the proxy.
2017-09-08 16:01:32,995 org.springframework.aop.framework.Cglib2AopProxy WARN  - Unable to proxy method [public final void org.springframework.orm.hibernate3.support.HibernateDaoSupport.setHibernateTemplate(org.springframework.orm.hibernate3.HibernateTemplate)] because it is final: All calls to this method via a proxy will be routed directly to the proxy.
2017-09-08 16:01:32,995 org.springframework.aop.framework.Cglib2AopProxy WARN  - Unable to proxy method [public final void org.springframework.dao.support.DaoSupport.afterPropertiesSet() throws java.lang.IllegalArgumentException,org.springframework.beans.factory.BeanInitializationException] because it is final: All calls to this method via a proxy will be routed directly to the proxy.
2017-09-08 16:01:33,049 org.springframework.aop.framework.Cglib2AopProxy WARN  - Unable to proxy method [public final org.hibernate.SessionFactory org.springframework.orm.hibernate3.support.HibernateDaoSupport.getSessionFactory()] because it is final: All calls to this method via a proxy will be routed directly to the proxy.
2017-09-08 16:01:33,049 org.springframework.aop.framework.Cglib2AopProxy WARN  - Unable to proxy method [public final void org.springframework.orm.hibernate3.support.HibernateDaoSupport.setSessionFactory(org.hibernate.SessionFactory)] because it is final: All calls to this method via a proxy will be routed directly to the proxy.
2017-09-08 16:01:33,049 org.springframework.aop.framework.Cglib2AopProxy WARN  - Unable to proxy method [public final org.springframework.orm.hibernate3.HibernateTemplate org.springframework.orm.hibernate3.support.HibernateDaoSupport.getHibernateTemplate()] because it is final: All calls to this method via a proxy will be routed directly to the proxy.
2017-09-08 16:01:33,049 org.springframework.aop.framework.Cglib2AopProxy WARN  - Unable to proxy method [public final void org.springframework.orm.hibernate3.support.HibernateDaoSupport.setHibernateTemplate(org.springframework.orm.hibernate3.HibernateTemplate)] because it is final: All calls to this method via a proxy will be routed directly to the proxy.
2017-09-08 16:01:33,049 org.springframework.aop.framework.Cglib2AopProxy WARN  - Unable to proxy method [public final void org.springframework.dao.support.DaoSupport.afterPropertiesSet() throws java.lang.IllegalArgumentException,org.springframework.beans.factory.BeanInitializationException] because it is final: All calls to this method via a proxy will be routed directly to the proxy.
2017-09-08 16:01:33,112 org.springframework.aop.framework.Cglib2AopProxy WARN  - Unable to proxy method [public final org.hibernate.SessionFactory org.springframework.orm.hibernate3.support.HibernateDaoSupport.getSessionFactory()] because it is final: All calls to this method via a proxy will be routed directly to the proxy.
2017-09-08 16:01:33,112 org.springframework.aop.framework.Cglib2AopProxy WARN  - Unable to proxy method [public final void org.springframework.orm.hibernate3.support.HibernateDaoSupport.setSessionFactory(org.hibernate.SessionFactory)] because it is final: All calls to this method via a proxy will be routed directly to the proxy.
2017-09-08 16:01:33,112 org.springframework.aop.framework.Cglib2AopProxy WARN  - Unable to proxy method [public final org.springframework.orm.hibernate3.HibernateTemplate org.springframework.orm.hibernate3.support.HibernateDaoSupport.getHibernateTemplate()] because it is final: All calls to this method via a proxy will be routed directly to the proxy.
2017-09-08 16:01:33,113 org.springframework.aop.framework.Cglib2AopProxy WARN  - Unable to proxy method [public final void org.springframework.orm.hibernate3.support.HibernateDaoSupport.setHibernateTemplate(org.springframework.orm.hibernate3.HibernateTemplate)] because it is final: All calls to this method via a proxy will be routed directly to the proxy.
2017-09-08 16:01:33,113 org.springframework.aop.framework.Cglib2AopProxy WARN  - Unable to proxy method [public final void org.springframework.dao.support.DaoSupport.afterPropertiesSet() throws java.lang.IllegalArgumentException,org.springframework.beans.factory.BeanInitializationException] because it is final: All calls to this method via a proxy will be routed directly to the proxy.
2017-09-08 16:01:35,073 org.springframework.aop.framework.Cglib2AopProxy WARN  - Unable to proxy method [public final org.hibernate.SessionFactory org.springframework.orm.hibernate3.support.HibernateDaoSupport.getSessionFactory()] because it is final: All calls to this method via a proxy will be routed directly to the proxy.
2017-09-08 16:01:35,073 org.springframework.aop.framework.Cglib2AopProxy WARN  - Unable to proxy method [public final void org.springframework.orm.hibernate3.support.HibernateDaoSupport.setSessionFactory(org.hibernate.SessionFactory)] because it is final: All calls to this method via a proxy will be routed directly to the proxy.
2017-09-08 16:01:35,073 org.springframework.aop.framework.Cglib2AopProxy WARN  - Unable to proxy method [public final org.springframework.orm.hibernate3.HibernateTemplate org.springframework.orm.hibernate3.support.HibernateDaoSupport.getHibernateTemplate()] because it is final: All calls to this method via a proxy will be routed directly to the proxy.
2017-09-08 16:01:35,073 org.springframework.aop.framework.Cglib2AopProxy WARN  - Unable to proxy method [public final void org.springframework.orm.hibernate3.support.HibernateDaoSupport.setHibernateTemplate(org.springframework.orm.hibernate3.HibernateTemplate)] because it is final: All calls to this method via a proxy will be routed directly to the proxy.
2017-09-08 16:01:35,073 org.springframework.aop.framework.Cglib2AopProxy WARN  - Unable to proxy method [public final void org.springframework.dao.support.DaoSupport.afterPropertiesSet() throws java.lang.IllegalArgumentException,org.springframework.beans.factory.BeanInitializationException] because it is final: All calls to this method via a proxy will be routed directly to the proxy.
2017-09-08 16:01:35,678 org.springframework.aop.framework.Cglib2AopProxy WARN  - Unable to proxy method [public final org.hibernate.SessionFactory org.springframework.orm.hibernate3.support.HibernateDaoSupport.getSessionFactory()] because it is final: All calls to this method via a proxy will be routed directly to the proxy.
2017-09-08 16:01:35,678 org.springframework.aop.framework.Cglib2AopProxy WARN  - Unable to proxy method [public final void org.springframework.orm.hibernate3.support.HibernateDaoSupport.setSessionFactory(org.hibernate.SessionFactory)] because it is final: All calls to this method via a proxy will be routed directly to the proxy.
2017-09-08 16:01:35,678 org.springframework.aop.framework.Cglib2AopProxy WARN  - Unable to proxy method [public final org.springframework.orm.hibernate3.HibernateTemplate org.springframework.orm.hibernate3.support.HibernateDaoSupport.getHibernateTemplate()] because it is final: All calls to this method via a proxy will be routed directly to the proxy.
2017-09-08 16:01:35,679 org.springframework.aop.framework.Cglib2AopProxy WARN  - Unable to proxy method [public final void org.springframework.orm.hibernate3.support.HibernateDaoSupport.setHibernateTemplate(org.springframework.orm.hibernate3.HibernateTemplate)] because it is final: All calls to this method via a proxy will be routed directly to the proxy.
2017-09-08 16:01:35,679 org.springframework.aop.framework.Cglib2AopProxy WARN  - Unable to proxy method [public final void org.springframework.dao.support.DaoSupport.afterPropertiesSet() throws java.lang.IllegalArgumentException,org.springframework.beans.factory.BeanInitializationException] because it is final: All calls to this method via a proxy will be routed directly to the proxy.
2017-09-08 16:01:35,700 org.springframework.aop.framework.Cglib2AopProxy WARN  - Unable to proxy method [public final org.hibernate.SessionFactory org.springframework.orm.hibernate3.support.HibernateDaoSupport.getSessionFactory()] because it is final: All calls to this method via a proxy will be routed directly to the proxy.
2017-09-08 16:01:35,700 org.springframework.aop.framework.Cglib2AopProxy WARN  - Unable to proxy method [public final void org.springframework.orm.hibernate3.support.HibernateDaoSupport.setSessionFactory(org.hibernate.SessionFactory)] because it is final: All calls to this method via a proxy will be routed directly to the proxy.
2017-09-08 16:01:35,700 org.springframework.aop.framework.Cglib2AopProxy WARN  - Unable to proxy method [public final org.springframework.orm.hibernate3.HibernateTemplate org.springframework.orm.hibernate3.support.HibernateDaoSupport.getHibernateTemplate()] because it is final: All calls to this method via a proxy will be routed directly to the proxy.
2017-09-08 16:01:35,700 org.springframework.aop.framework.Cglib2AopProxy WARN  - Unable to proxy method [public final void org.springframework.orm.hibernate3.support.HibernateDaoSupport.setHibernateTemplate(org.springframework.orm.hibernate3.HibernateTemplate)] because it is final: All calls to this method via a proxy will be routed directly to the proxy.
2017-09-08 16:01:35,700 org.springframework.aop.framework.Cglib2AopProxy WARN  - Unable to proxy method [public final void org.springframework.dao.support.DaoSupport.afterPropertiesSet() throws java.lang.IllegalArgumentException,org.springframework.beans.factory.BeanInitializationException] because it is final: All calls to this method via a proxy will be routed directly to the proxy.

【问题讨论】:

  • 没有问题,您可以忽略这些警告。它们可能是由于您启用了 AOP 并且有一个切点来匹配您上下文中的每个类/bean。
  • @M.Deinum 为什么?为什么spring proxy是hibernate的final方法?
  • 因为您启用了匹配所有内容的功能。
  • 你能找到办法让它消失吗?
  • 不...这取决于您。您编写了一个方面/切入点表达式,该表达式导致所有 bean 的代理创建。

标签: spring hibernate tomcat cglib


【解决方案1】:

请看这里。 Spring boot - Unable to proxy interface-implementing method - WARN message

造成这种情况的一个常见原因是在类级别而不是接口上使用 Springs @Transactional 注释。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多