hibernate spring集成做事务管理的时候异常

J2EE 码拜 6年前 (2015-05-10) 252次浏览 0个评论
 

Exception in thread “main” org.springframework.beans.factory.BeanCreationException: Error creating bean with name “”userManager”” defined in file [E:\java\Hibernate_spring2\bin\applicationContext-beans.xml]: Cannot resolve reference to bean “”sessionFactory”” while setting bean property “”sessionFactory””; nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name “”sessionFactory””: Bean with name “”sessionFactory”” has been injected into other beans [txManager] in its raw version as part of a circular reference, but has eventually been wrapped (for example as part of auto-proxy creation). 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.
Caused by: org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name “”sessionFactory””: Bean with name “”sessionFactory”” has been injected into other beans [txManager] in its raw version as part of a circular reference, but has eventually been wrapped (for example as part of auto-proxy creation). 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.createBean(AbstractAutowireCapableBeanFactory.java:423)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:245)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:141)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:242)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:156)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:246)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:128)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:955)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:729)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:416)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:245)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:141)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:242)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:156)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:290)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:348)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:92)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:77)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:68)
at com.dlm.client.Client.main(Client.java:13)
我是看王勇的视频写的,不知道怎么出异常了

10分
别接触过这个异常。
但是看了下错误异常并且查了下 大概理解为下面几个可能(我是说可能。)

1 SPRING循环依赖 
但有时候这正是我们想要的,考虑这种情况:
我们用一个ManagerFactory来包含所有Manager的声明,以便在程序中用到多个Manager的地方,一个入口集中访问。但是,可能某个Manager本身就需要用到其它几个Manager,进而用到ManagerFactory。这时,我们可以这样声明即可

10分
看你配置文件怎么配置的??
看异常好像是循环依赖的问题,楼主把相关配置文件给出来吧,这样好定位原因。
楼主是不是路径写错了,配置文件贴出来啊
10分
一看 就是 sessionFactory 写错了。仔细检查下巴。
出现这样的情况 往往是配置文件出现了问题,请仔细检查一下你的配置文件 bean 配置出现了问题 
10分
你的dao bean没有注入sessionFactory
你用的dao是不是用MyEclipes自动集成继承HibernateDaoSupport的,要是这样的话service用到dao,必须依赖注入,否则就会出sessionfactory的错。因为dao跟sessionfactory有依赖关系。希望能帮到你
<bean id=”userManager” class=”com.dlm.manager.UserManager”>
<property name=”sessionFactory” ref=”sessionFactory”/>
<property name=”logManager” ref=”logManager”/>
</bean>
<bean id=”logManager” class=”com.dlm.manager.LogManager”>
<property name=”sessionFactory” ref=”sessionFactory”/>
</bean>

<!– 配置sessionFactory –>
<bean id=”sessionFactory” class=”org.springframework.orm.hibernate3.LocalSessionFactoryBean”>
<property name=”configLocation”>
<value>classpath:hibernate.cfg.xml</value>
</property>
</bean>
<!– 配置事务管理器 –>
<bean id=”txManager” class=”org.springframework.orm.hibernate3.HibernateTransactionManager”>
<property name=”sessionFactory”>
<ref bean=”sessionFactory”/>
</property>
</bean>
<!– 配置事务传播特性 –>
<tx:advice id=”txAdvice” transaction-manager=”txManager”>
<tx:attributes>
<tx:method name=”add*” propagation=”REQUIRED”/>
<tx:method name=”delete*” propagation=”REQUIRED”/>
<tx:method name=”update*” propagation=”REQUIRED”/>
<tx:method name=”*” read-only=”true”/>
</tx:attributes>
</tx:advice>
<!– 配置哪些方法参与事务 –>
<aop:config>
<aop:pointcut id=”allMethod” expression=”execution(* *(..))”/>
<aop:advisor pointcut-ref=”allMethod” advice-ref=”txAdvice”/>
</aop:config>

把logManager的bean中的<property name=”sessionFactory” ref=”sessionFactory”/> 去掉。
可能就没问题
还是没解决

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明hibernate spring集成做事务管理的时候异常
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!