-
关于spring事务BeanNameAutoProxyCreator配置的问题5
我的事务配置如下
<!--事务-->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager" ref="transactionManager" />
<property name="transactionAttributes">
<props>
<prop key="save*">PROPAGATION_REQUIRED,-Exception</prop>
</props>
</property>
</bean>
<bean id="autoProxy" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames">
<list>
<value>*Service</value>
</list>
</property>
<property name="interceptorNames">
<list>
<value>transactionInterceptor</value>
</list>
</property>
</bean>
<!--事务结束-->
然后在SysMenuServiceImpl里面有方法
public void addMenus()throws Exception{
SysMenu m1 = new SysMenu();
m1.setMenuName("cccccc");
m1.setStatus(true);
m1.setParentId(new BigDecimal(1));
SysMenu m2 = new SysMenu();
m2.setMenuName("测试测试测试测试测试测试");
m2.setStatus(true);
m2.setAccessUrl("");
try{
genericDao.save(m1);
genericDao.save(m2);//有异常的
}catch(Exception e){
throw new Exception(e);
}
}
然后控制器调用
try{
sysMenuService.addMenus();
//sysMenuServiceImpl.addMenus();
}catch(Exception e){e.printStackTrace();}
在保存m2的时候会出现异常,我希望的结果是将m1的数据回滚
而实际上,出现异常时m1的数据还是会保存到数据库。
这事务难道配置错了吗?
问题补充:我的数据库使用的是Oracle10g 所以表类型是支持的
关于Service的注解,肯定没问题,方法都能调用了。
异常我的dao跟Service全部都抛出去了,并没有自己处理
所有异常统一放在控制器处理。
问题补充:补充下,我的Service跟Dao都是用注解方式注入的,下午我将注解方式换成配置文件注入的方式, <!-- 配置Service -->
<bean id="sysMenuService" class="com.xxx.framework.service.impl.SysMenuServiceImpl">
<property name="sysMenuDao" ref="sysMenuDao" />
</bean>
<!-- 配置dao-->
<bean id="sysMenuDao" class="com.xxx.framework.dao.impl.SysMenuDaoImpl">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
这样配置后,代码里面就是增加了相应的get跟set方法,事务就能回滚了。
难道是注解方式不支持这样的事务配置吗?
项目一定得用注解的,该怎么配置事务呢2012年11月08日 11:19
4个答案 按时间排序 按投票排序
-
1:spring 是完全可以声明式事务的。
2:如果你使用spring mvc的话。可以这样applicationContext.xml中<context:component-scan base-package="com" >
<context:exclude-filter expression="org.springframework.stereotype.Controller" type="annotation"/>
</context:component-scan>
[servlet-name]-servlet.xml中
<context:component-scan base-package="com" use-default-filters="false" >
<context:include-filter expression="org.springframework.stereotype.Controller" type="annotation"/>
</context:component-scan>2012年11月26日 09:50
-
刚没注意看:
1。你配置文件中
<prop key="save*">PROPAGATION_REQUIRED,-Exception</prop> 标明了save*的方法将被事务管理 而你的方法是 addMenus()。。。
2.你 dao 中要有 @Transactional2012年11月08日 16:49
-
事物不回滚就那么几个原因:
1.0 表类型不支持 (mysql innodB 可以)
2.0 扫描或者注解的类 不对!(没在扫描范围内)
3.0 不能自己处理异常,需要抛出来 异常类型也要注意2012年11月08日 12:34
相关推荐
### Spring事务管理——声明式事务配置详解 #### 引言 在现代的Java企业级应用开发中,事务处理是确保数据一致性和完整性的重要机制。Spring框架提供了强大的事务管理功能,支持编程式和声明式两种事务管理方式。...
本篇文章将详细解析Spring中的六种事务配置方法,帮助开发者深入理解并掌握Spring事务的运用。 1. **基于XML的事务配置** Spring支持通过XML配置来管理事务,这是最基础的配置方式。在`spring`的配置文件中,我们...
Spring_Hibernate使用TransactionInterceptor声明式事务配置 在这篇文章中,我们将探讨使用Spring_Hibernate框架实现声明式事务配置的方法,具体来说,就是使用TransactionInterceptor来管理事务。在Spring框架中,...
前几天搞 Spring + Hibernate + Struts 事务配置 ,网上找了好多资料,不过好无语,大多都是 Ctrl + V,浪费俺的宝贵时间 现在我总结配出一套,给大家参考参考,可能有不足,请大家多多交流。 附:内有弹出...
在Spring配置文件中,我们需要声明一个`BeanNameAutoProxyCreator` bean,并设置其属性。主要的属性有: 1. `proxyTargetClass`: 是否使用CGLIB代理,默认为false,如果设为true,将使用CGLIB生成子类代理;若设为...
根据提供的文件信息,本文将详细解析Spring 1.2中声明式事务管理的相关知识点,包括其配置方式、工作原理以及如何在实际应用中实施。 ### Spring 1.2声明式事务简介 Spring框架中的声明式事务管理是通过AOP(面向...
### Spring中的Transaction事务传播行为种类详解 #### 一、引言 在开发基于Spring框架的应用程序时,事务管理是确保数据一致性的重要手段之一。Spring框架提供了丰富的事务管理功能,其中包括了事务传播行为...
Spring 声明式事务和 @Aspect 的拦截顺序问题的解决 Spring 框架中,声明式事务和 @Aspect 都可以用于实现Aspect-Oriented Programming(面向方面编程),但是它们的拦截顺序问题往往会导致很多问题。本文将详细...
在Spring的XML配置文件中,我们需要声明一个`BeanNameAutoProxyCreator` bean,并设置其属性。例如: ```xml <bean id="proxyCreator" class="org.springframework.aop.framework.autoproxy....
10.3.1 Spring事务传播机制回顾 10.3.2 相互嵌套的服务方法 10.4 多线程的困惑 10.4.1 Spring通过单实例化Bean简化多线程问题 10.4.2 启动独立线程调用事务方法 10.5 联合军种作战的混乱 10.5.1 Spring事务管理器的...
### Spring 框架概述及核心特性 #### 第一章 Spring 简介 ...- **对比**:Spring 的事务管理更为灵活和强大,支持多种事务传播行为、隔离级别等。 #### 第六章 框架整合 ##### 一、SSH - **SSH**...
2.4.1. 在XML里更为简单的声明性事务配置 2.4.2. JPA 2.4.3. 异步的JMS 2.4.4. JDBC 2.5. Web层 2.5.1. Spring MVC的表单标签库 2.5.2. Spring MVC合理的默认值 2.5.3. Portlet 框架 2.6. 其他特性 2.6.1. 动态语言...
通过以上配置,我们能够有效地在Spring环境中实现AOP,特别是针对事务管理这一场景的应用。这种方式不仅能够帮助我们更好地组织代码,还能提高程序的可维护性和可扩展性。同时,利用Spring框架的强大功能,我们能够...
本程序是struts spring hibernate的完整环境配置, 包括: struts1.3 spring 2.0 hibernate 3.1 的所有完整的包。 BeanNameAutoProxyCreator事务处理 中文乱码解决 MD5程序加密 AJAX验证码等 ...
10.3.1 Spring事务传播机制回顾 10.3.2 相互嵌套的服务方法 10.4 多线程的困惑 10.4.1 Spring通过单实例化Bean简化多线程问题 10.4.2 启动独立线程调用事务方法 10.5 联合军种作战的混乱 10.5.1 Spring事务管理器的...
描述:本篇详细解析了在SSH(Struts+Spring+Hibernate)框架整合过程中,Spring配置事务管理的具体实现方法。通过深入分析XML配置文件中的bean定义,我们将逐步理解如何通过Spring来管理和控制事务,以及如何集成...
本程序是struts spring hibernate的完整环境配置, 包括: struts1.3 spring 2.0 hibernate 3.1 的所有完整的包。 BeanNameAutoProxyCreator事务处理 中文乱码解决 MD5程序加密 AJAX验证码等 ...
本程序是struts spring hibernate的完整环境配置, 包括: struts1.3 spring 2.0 hibernate 3.1 的所有完整的包。 BeanNameAutoProxyCreator事务处理 中文乱码解决 MD5程序加密 AJAX验证码等 ...