首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

spring web运用hibernate的事务控制报错

2013-08-01 
spring web使用hibernate的事务控制报错property namedataSource refdataSource //beantx:anno

spring web使用hibernate的事务控制报错

<property name="dataSource" ref="dataSource" />

</bean>

<tx:annotation-driven transaction-manager="txManager" />

?

? ? ? 这也就是为什么将上面的配置移动到applicationContext-servlet.xml中后,就可以进行事务处理了,txManager的AOP范围变为DispatchServlet子上下文了

?

解决办法

解决的办法是,让ContextLoaderListener扫描service,不要让DispatcherServlet扫描到service,这样所有创建的service都来自ContextLoaderListener父上下文,从而可以事务控制AOP了

?

解决的配置:

在applicationContext.xml增加下面内容(网上写的是要加下面的内容,但加不加不影响最终结果,可能会影响部分效率):

? ? <!-- 扫描除web层外的bean,以避免其他层事务失效 -->

<context:component-scan base-package="com.myproject">

<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>

</context:component-scan>

?

在applicationContext-servlet.xml中增加下面内容:

<!-- 让注解的bean工作起来,该配置已包含context:annotation-config的功能 -->

<context:component-scan base-package="com.myproject" >

<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/><!--网上写的是要加下面的内容,但加不加不影响最终结果,可能会影响部分效率-->

<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service" /><!--这里非常关键-->

</context:component-scan>

?

web.xml的配置:<!-- 初始化spring -->

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>

/WEB-INF/config/spring/applicationContext.xml,

/WEB-INF/config/spring/applicationContext-dao.xml,

/WEB-INF/config/spring/applicationContext-securitycode.xml

</param-value>

</context-param>

<listener>

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

<!-- 初始化spring mvc -->

<servlet>

<servlet-name>spring</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<init-param>

<param-name>contextConfigLocation</param-name>

<param-value>

? ? ? /WEB-INF/config/spring/applicationContext-servlet.xml

</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

?

热点排行