我在做事务设置的时候产生下面的错误!!!

严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'serverdataSource': Bean with name 'serverdataSource' has been injected into other beans [serversessionFactory] in its raw version as part of a circular reference, but has eventually been wrapped. This means that said other beans do not use the final version of the bean. This is often the result of over-eager type matching - consider using 'getBeanNamesOfType' with the 'allowEagerInit' flag turned off, for example.
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:498)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
at java.security.AccessController.doPrivileged(Native Method)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:220)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:729)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:381)
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3843)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:926)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:889)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
2009-10-15 16:50:26 org.apache.catalina.core.StandardContext start
严重: Error listenerStart
2009-10-15 16:50:26 org.apache.catalina.core.StandardContext start
严重: Context [/glcollege] startup failed due to previous errors
2009-10-15 16:50:26 org.apache.catalina.core.ApplicationContext log

我的设置如下:




<!-- the transactional semantics... -->

<tx:attributes>
  <!-- all methods starting with 'get' are read-only -->

  <tx:method name="get*" read-only="true"/>
  <tx:method name="list*" read-only="true"/>
  <!-- other methods use the default transaction settings (see below) -->

  <tx:method name="*" propagation="REQUIRED"/>
</tx:attributes>

/tx:advice

aop:config


/aop:config

[b]问题补充:[/b]
请明示,我比较初级,很想你能再说得明白一点,
[b]问题补充:[/b]
<?xml version="1.0" encoding="UTF-8"?>
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">

<bean id="dataSource"
    class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName"
        value="oracle.jdbc.driver.OracleDriver">
    </property>
    <property name="url"
        value="jdbc:oracle:thin:202.118.121.112:1521:orcl">
    </property>
    <property name="username" value="scott"></property>
    <property name="password" value="gl"></property>
</bean>

<bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource">
        <ref bean="dataSource" />
    </property>
    <property name="mappingResources">
        <list>
            <value>com/gl/model/Score.hbm.xml</value>
            <value>com/gl/model/Userpassword.hbm.xml</value>
            <value>com/gl/model/Xuanke.hbm.xml</value>

        </list>
    </property>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop>
            <prop key="show_sql">true</prop>
            <prop key="hibernate.hbm2ddl.auto">update</prop>
            <prop key="hibernate.jdbc.batch_size">20</prop> 
        </props>
    </property>
</bean>




<!--



-->

<!-- the transactional semantics... -->

<tx:attributes>

  <tx:method name="insert*" propagation="REQUIRED"/>
  <tx:method name="update*" propagation="REQUIRED"/>
  <tx:method name="delete*" propagation="REQUIRED"/>
  <tx:method name="*" read-only="true"/>
</tx:attributes>

/tx:advice

aop:config


/aop:config

<!--<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory"/>
</bean>

<bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
      事务拦截器bean需要依赖注入一个事务管理器 
    <property name="transactionManager" ref="transactionManager"/>
    <property name="transactionAttributes">
          下面定义事务传播属性
        <props>
            <prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
            <prop key="*">PROPAGATION_REQUIRED</prop>
        </props>
    </property>
</bean>

 定义BeanNameAutoProxyCreator
<bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
      指定对满足哪些bean name的bean自动生成业务代理 
    <property name="beanNames">
          下面是所有需要自动创建事务代理的bean
        <list>
            <value>mgr</value>
            <value>cmgr</value>
            <value>xmgr</value>

        </list>
          此处可增加其他需要自动创建事务代理的bean
    </property>
      下面定义BeanNameAutoProxyCreator所需的事务拦截器
    <property name="interceptorNames">
        <list>
             此处可增加其他新的Interceptor 
            <value>transactionInterceptor</value> 
        </list>
    </property>
</bean>

--><bean id="userpasswordDao"
    class="com.gl.dao.hibernate.UserpasswordDaoHibernate" abstract="false"
    lazy-init="default" autowire="default" dependency-check="default">
    <property name="sessionFactory">
        <ref bean="sessionFactory" />
    </property>
</bean>

<bean id="mgr" class="com.gl.service.impl.UserpasswordManagerimpl"
    abstract="false" lazy-init="default" autowire="default"
    dependency-check="default">
    <property name="userpasswordDao">
        <ref bean="userpasswordDao" />
    </property>
</bean>


<bean id="LoginAction" class="com.gl.action.LoginAction"
    abstract="false" scope="prototype" lazy-init="default"
    autowire="default" dependency-check="default">
    <property name="mgr">
        <ref bean="mgr" />
    </property>
</bean>

<bean id="scoreDao" class="com.gl.dao.hibernate.ScoreDaoHibernate"
    abstract="false" lazy-init="default" autowire="default"
    dependency-check="default">
    <property name="sessionFactory">
        <ref bean="sessionFactory" />
    </property>
</bean>

<bean id="cmgr" class="com.gl.service.impl.ScoreManagerimpl"
    abstract="false" lazy-init="default" autowire="default"
    dependency-check="default">
    <property name="scoreDao">
        <ref bean="scoreDao" />
    </property>
</bean>

<bean id="ShowAction" class="com.gl.action.ShowActon"
    abstract="false" lazy-init="default"
    autowire="default" dependency-check="default"  scope="prototype">
    <property name="cmgr">
        <ref bean="cmgr" />
    </property>
</bean>

<bean id="xuankeDao" class="com.gl.dao.hibernate.XuankeDaoHibernate"
    abstract="false" lazy-init="default" autowire="default"
    dependency-check="default">
    <property name="sessionFactory">
        <ref bean="sessionFactory" />
    </property>
    <property name="pageSize" value="5" />
</bean>

<bean id="xuankemanager"
    class="com.gl.service.impl.XuankeManagerimpl" abstract="false"
    lazy-init="default" autowire="default" dependency-check="default">
    <property name="xuankeDao">
        <ref bean="xuankeDao" />
    </property>
</bean>

<bean id="XuankeAction" class="com.gl.action.XuankeAction"
    abstract="false" lazy-init="default" autowire="default"
    dependency-check="default" scope="prototype">
    <property name="xuankemanager">
        <ref bean="xuankemanager" />
    </property>
</bean>

<bean id="courseaction" class="com.gl.action.courseaction"
    abstract="false" lazy-init="default" autowire="default"
    dependency-check="default" scope="prototype">
    <property name="xuankemanager">
        <ref bean="xuankemanager" />
    </property>
</bean>

</beans>

[b]问题补充:[/b]
是啊,我前一段时间做的这个项目,今天突然想加上事务可是就不行,也不知道到哪里的问题,
[b]问题补充:[/b]
在配置文件中,
这种方式我是注释掉的,应该不会冲突啊!
[b]问题补充:[/b]
我删掉了多余的注释东西,可是,还是报那个错,伤脑筋啊!!!
[b]问题补充:[/b]
请指点!!
[b]问题补充:[/b]
改了,可是,还是报那个错误!
[b]问题补充:[/b]
我找到问题的地方了,是因为我有两个applicationcontext.xml配置文件,而在两个配置文件中我都写了事务的设置,所以才报这个错误。如果有多个applicationcontext.xml文件的话,只需要在其中一个设置事务即可。希望不要犯我这样的错误了!
同时在这里谢谢[size=medium]lovewhzlq[/size]的分析,你的分析是正确的,希望以后可以和你继续交流,能留下你的QQ吗,在此结贴给分!

这导致了循环引用的注入

'serverdataSource'这个bean已经注入到了serversessionFactory这个bean中了,

你配置文件全粘出来分析

Error creating bean with name 'serverdataSource': Bean with name 'serverdataSource' has been injected into other beans [serversessionFactory] in its raw version as part of a circular reference, but has eventually been wrapped. This means that said other beans do not use the final version of the bean. This is often the result of over-eager type matching - consider using 'getBeanNamesOfType' with the 'allowEagerInit' flag turned off, for example.

仔细看这个异常说明,很明了

反正就是SPRING循环依赖导致的问题

看不出你bean具体哪里有这个问题

发现了


<!-- the transactional semantics... -->

<tx:attributes> 

  <tx:method name="insert*" propagation="REQUIRED"/> 
  <tx:method name="update*" propagation="REQUIRED"/> 
  <tx:method name="delete*" propagation="REQUIRED"/> 
  <tx:method name="*" read-only="true"/> 
</tx:attributes> 

/tx:advice

aop:config


/aop:config

这种aop方式 和 定义BeanNameAutoProxyCreator

这种有冲突,这样就代理两次了

[code="java"]

[/code]
改为