`
muqingren
  • 浏览: 32122 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SpringMVC事务问题

阅读更多
我事务用xml配置的形式给出,如下
<!-- 配置事务管理 -->
    <bean id="transactionManager" 
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource">
			<ref local="dataSource"/>
		</property>
	</bean>
	<!-- 定义了所有事务处理方面的公共属性 -->
	<bean id="baseTxProxy" abstract="true"
		class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
		<property name="transactionManager">
			<ref bean="transactionManager"/>
		</property>
		<property name="transactionAttributes">


我的事务配置在业务层,在spring里定义bean的时候,继承上面的抽象事务,如下:
<!-- login -->
    <bean name="baselogin" parent="baseTxProxy">
		<property name="target" ref="loginbs"></property>
	</bean>
	<bean name="loginbs" class="cos.authority.login.business.impl.LoginBsImpl" >
		<property name="logindao" ref="logindao"></property>
		<property name="menudao" ref="menudao"></property>
	</bean>

springMVC用的是注解的形式,配置如下:
<context:component-scan base-package="cos"/>
	<!-- hendlerMapping -->
	<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
	
	<!-- Resolve logical view names to .jsp resources in the /WEB-INF/views directory --> 
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/views/" />
		<property name="suffix" value=".jsp" />
	</bean>
	<!-- Exception handler -->
	<bean class="cos.frame.exception.CosExceptionHandler" />
	<!-- authority intercepter -->
	<mvc:interceptors>
		<bean class="cos.frame.authorize.CosAuthorityInterceptor">
		</bean>
	</mvc:interceptors>


然后我的业务层的事务就不再起作用了,我按照你说的,在MVC扫描包的时候我设置use-default-filters="false",并且只扫描我定义的controller,还是不行啊,这可怎么解决啊,是不是第一次扫描spring全局的时候就把这些bean初始化了?
分享到:
评论
7 楼 muqingren 2011-03-22  
终于搞定
我的问题和这些都没有关系,是我在controller里注入service类的时候用的是@autowire,默认是类型注入,则自动找我定义的没有事务控制的bean,后改为@Resource(name='baseuserbs')
事务回滚
谢谢 fuliang 
6 楼 muqingren 2011-03-22  
这是别人的解决方法,为啥我的不行呢.......
http://www.iteye.com/topic/714686
5 楼 muqingren 2011-03-22  
<context:component-scan base-package="cos">
	</context:component-scan>
	<!-- 配置事务管理 -->
    <bean id="transactionManager" 
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource">
			<ref bean="dataSource"/>
		</property>
	</bean>
	<!-- 定义了所有事务处理方面的公共属性 -->
	<bean id="baseTxProxy" abstract="true"
		class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
		<property name="transactionManager">
			<ref bean="transactionManager"/>
		</property>
		<property name="transactionAttributes">
			<props>
				<prop......</prop>
               		</props>
		</property>
	</bean>
	<!-- hendlerMapping -->
	<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
	
	<!-- Resolve logical view names to .jsp resources in the /WEB-INF/views directory --> 
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/views/" />
		<property name="suffix" value=".jsp" />
	</bean>
	<!-- Exception handler -->
	<bean class="cos.frame.exception.CosExceptionHandler" />
	<!-- authority intercepter -->
	<mvc:interceptors>
		<bean class="cos.frame.authorize.CosAuthorityInterceptor">
		</bean>
	</mvc:interceptors>
4 楼 muqingren 2011-03-22  
,我试过了,还是不生效
我现在声明式事务已经配置在了XX-servlet.xml里面了,定义bean的XML我也单独提取出来和XX-servlet.xml一起加载,因为我的事务是一个抽象事务
能在帮我看看嘛?谢谢
3 楼 muqingren 2011-03-22  
,我昨天试过了,配置都通过不了,我再试试
2 楼 fuliang 2011-03-21  
如果扫描两次,将导致业务方法没有事务。但是如果在Spring MVC的xxx-servlet.xml中配置事务,可以解决这个问题。
1 楼 muqingren 2011-03-21  
,帮忙,谢谢了

相关推荐

Global site tag (gtag.js) - Google Analytics