每次在运行程序的时候,都会提示这样的错误,但是数据可以正常的插入数据库,不知道是什么原因,请各位执教了,谢谢,分不够立刻加!错误:
008-07-22 14:28:44,203 WARN [org.springframework.aop.framework.Cglib2AopProxy] - 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.
2008-07-22 14:28:44,203 WARN [org.springframework.aop.framework.Cglib2AopProxy] - 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.
2008-07-22 14:28:44,203 WARN [org.springframework.aop.framework.Cglib2AopProxy] - 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.
2008-07-22 14:28:44,218 WARN [org.springframework.aop.framework.Cglib2AopProxy] - 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.
2008-07-22 14:28:44,218 WARN [org.springframework.aop.framework.Cglib2AopProxy] - 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.测试类:import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;import ssh.Login;
import ssh.LoginDAO;public class textdao { /**
 * @param args
 */
public static void main(String[] args) {
ApplicationContext ctx =new ClassPathXmlApplicationContext("applicationContext.xml");
LoginDAO dao = (LoginDAO)ctx.getBean("Loginproxy");
Login user = new Login();
user.setPassword("pa的");
user.setUsername("sprddding dao嗲的");
dao.save(user);
}}applicationcontext.xml<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="sessionfactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation"
value="classpath:hibernate.cfg.xml">
</property>
</bean>
<bean id="LoginDAO" class="ssh.LoginDAO">
<property name="sessionFactory">
<ref bean="sessionfactory" />
</property>
</bean>
<bean id="transactionmanager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionfactory"/>
</property>
</bean>
<bean id="Loginproxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="proxyTargetClass">
<value>true</value>
</property>
<property name="transactionManager">
<ref local="transactionmanager"/>
</property>
<property name="target">
<ref local="LoginDAO"/>
</property>
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
</beans>

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【xdjzz】截止到2008-07-22 16:32:19的历史汇总数据(不包括此帖):
    发帖的总数量:22                       发帖的总分数:500                      每贴平均分数:22                       
    回帖的总数量:21                       得分贴总数量:3                        回帖的得分率:14%                      
    结贴的总数量:22                       结贴的总分数:500                      
    无满意结贴数:11                       无满意结贴分:400                      
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:50.00 %               无满意结分率:80.00 %                  
    敬礼!
      

  2.   

    Unable to proxy method [public final 
    大概是代理类不能重写final方法
      

  3.   

    这只是警告而已..不是错误...Cglib2AopProxy,可能你aop:pointcut声明包含了无法代理的method,也就是hibernateDAOSupport里那些final method,,所以报这个警告
      

  4.   


     <bean id="Loginproxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
     abstract="true">这里加了一个 abstract="true"
    一、
    你不要采用:<property name="target">
    <ref local="LoginDAO"/>
    </property>这种方式来写。
    可以采用 <bean id="loginService" parent="transactionProxy">
    <property name="target">
    <bean class="ssh.LoginServiceImpl"
    autowire="byName" />
    </property>
    </bean>二、你的事务控制最好放在Service层来处理,而不是DAO层。三、你没有用到事务啊。加上一个-Exception,来捕获异常处理你的事务控制回滚等操作。
      

  5.   

    TransactionProxyFactoryBean返回不了新建的代理
    由于getSessionFactory()是final方法,所以无法对它进行织入其实你完全可以把AOP去掉,不用代理来做,或者即使你需要用代理类管理事务的话,忽略这个警告,也可以正常运行,因为你没有织入逻辑,所以警告提示不会生成新的代理类对象,而是直接把参数丢给原始对象来运行,结果不会有问题!
      

  6.   

    加了一个 abstract="true" 也不行而且连数据也写不进去了,
    提示错误:Exception in thread "main" org.springframework.beans.factory.BeanIsAbstractException: Error creating bean with name 'Loginproxy': Bean definition is abstract
    at org.springframework.beans.factory.support.AbstractBeanFactory.checkMergedBeanDefinition(AbstractBeanFactory.java:1035)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:244)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
    at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:733)
    at textdao.main(textdao.java:16)
      

  7.   

    按照你的意思,把你的配置文件修改了一下<?xml version="1.0" encoding="UTF-8"?>
    <beans
        xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">    <bean id="sessionfactory"
            class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
            <property name="configLocation"
                value="classpath:hibernate.cfg.xml">
            </property>
        </bean>        <bean id="transactionmanager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
                   <property name="sessionFactory">
                        <ref local="sessionfactory"/>
                    </property>
            </bean>        <bean id="Loginproxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true">
            <property name="transactionManager">
                  <ref local="transactionmanager"/>
            </property>
            <property name="transactionAttributes">
                 <props>
                        <prop key="*">PROPAGATION_REQUIRED,-Exception</prop>
                  </props>
            </property>
        </bean>
        <bean id="LoginDAO"  parent="Loginproxy">
            <property name="target">
                <bean  class="ssh.LoginDAO" autowire="byName"/>
            </property>
        </bean>    </beans>
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;import ssh.Login;
    import ssh.LoginDAO;public class textdao {    /**
         * @param args
         */
        public static void main(String[] args) {
           try{
            ApplicationContext ctx =new ClassPathXmlApplicationContext("applicationContext.xml");
                LoginDAO dao = (LoginDAO)ctx.getBean("Loginproxy");
                Login user = new Login();
                user.setPassword("pa的");
                user.setUsername("sprddding dao嗲的");
                dao.save(user);
             }catch(Exception e){
                e.printStackTrace();
             }    }}另外 你的 LoginDAO  是接口还是具体的实现类?
      

  8.   

    运行的时候提示出这样的错误:Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'LoginDAO' defined in class path resource [applicationContext.xml]: Cannot create inner bean 'ssh.LoginDAO#181edf4' of type [ssh.LoginDAO] while setting bean property 'target'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ssh.LoginDAO#181edf4' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required
    Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ssh.LoginDAO#181edf4' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required
    Caused by: java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required
    at org.springframework.orm.hibernate3.support.HibernateDaoSupport.checkDaoConfig(HibernateDaoSupport.java:115)
    at org.springframework.dao.support.DaoSupport.afterPropertiesSet(DaoSupport.java:44)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1202)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1172)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:428)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:215)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:122)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1100)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:862)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:424)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:251)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:156)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:248)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:284)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:91)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:75)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:65)
    at textdao.main(textdao.java:15)
      

  9.   

    Caused by: java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required 
      

  10.   


        <bean id="loginDAO"  parent="Loginproxy">
            <property name="target">
                <bean  class="ssh.LoginDAO" autowire="byName"/>
            </property>
        </bean>import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;import ssh.Login;
    import ssh.LoginDAO;public class textdao {    /**
         * @param args
         */
        public static void main(String[] args) {
           try{
            ApplicationContext ctx =new ClassPathXmlApplicationContext("applicationContext.xml");
                LoginDAO dao = (LoginDAO)ctx.getBean("loginDAO");
                Login user = new Login();
                user.setPassword("pa的");
                user.setUsername("sprddding dao嗲的");
                dao.save(user);
             }catch(Exception e){
                e.printStackTrace();
             }    }}
      

  11.   

    jishu_vip ,我直接复制了你代码,可是还是出现了这样的错误:
    Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'LoginDAO' defined in class path resource [applicationContext.xml]: Cannot create inner bean 'ssh.LoginDAO#181edf4' of type [ssh.LoginDAO] while setting bean property 'target'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ssh.LoginDAO#181edf4' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required 
    Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ssh.LoginDAO#181edf4' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required 
    Caused by: java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required 
    at org.springframework.orm.hibernate3.support.HibernateDaoSupport.checkDaoConfig(HibernateDaoSupport.java:115) 
    at org.springframework.dao.support.DaoSupport.afterPropertiesSet(DaoSupport.java:44) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1202) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1172) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:428) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:215) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:122) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1100) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:862) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:424) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:251) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:156) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:248) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:284) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352) 
    at org.springframework.context.support.ClassPathXmlApplicationContext. <init>(ClassPathXmlApplicationContext.java:91) 
    at org.springframework.context.support.ClassPathXmlApplicationContext. <init>(ClassPathXmlApplicationContext.java:75) 
    at org.springframework.context.support.ClassPathXmlApplicationContext. <init>(ClassPathXmlApplicationContext.java:65) 
    at textdao.main(textdao.java:15) 
      

  12.   

     <bean id="sessionfactory"
            class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
            <property name="configLocation"
                value="classpath:hibernate.cfg.xml">
            </property>
        </bean>
    sessionfactory---->换成sessionFactory试试看吧,我才刚写好,还没有运行 过.