requires new(为什么spring-mybatis的事务的传播行为requires)
本文目录
- 为什么spring-mybatis的事务的传播行为requires
- project organization是什么意思
- Spring 事务回滚问题请教
- java中 spring 的事务问题
- 如何理解spring事物required
- spring REQUIRES_NEW 不好用
- java中required和requireNew是什么意思
为什么spring-mybatis的事务的传播行为requires
如果你的系统只是简单的增删改查的话,理解这个会不太好理解,越是业务复杂,越是好理解,PROPAGATION_REQUIRES_NEW并不是说来替换PROPAGATION_REQUIRED的,在spring的配置文件中,配置传播机制是基于方法的,也就是说在日志的方法上你可以用这个,其他需要正常业务处理的地方还是使用PROPAGATION_REQUIRED
如果你对AOP不太熟悉的话,建议你看看模板方法模式和动态代理模式
project organization是什么意思
project organization
项目组织;设计结构
双语例句
1.
The transition from a waterfall method to an iterative method and phases requires new modes of project organization and understanding.
从瀑布方法向迭代方法和阶段的转变需要项目组织和理解的新模式。
2.
If the project organization is using UML for modeling, unit testers will need sequence diagrams, class diagrams, and perhaps activity diagrams.
如果这个项目组织利用 UML 来建模,那么单元测试将需要序列图,类图,可能还会需要活动图。
Spring 事务回滚问题请教
有个很简单的办法:
1、ACD配置需要事务@Transactional(propagation = Propagation.REQUIRED)
2、B 方法上面配置新事务 @Transactional(propagation = Propagation.REQUIRES_NEW)
3、直接捕捉D方法的异常 不做处理 例如 代码这么写
A;
B;//配置另开事务@Transactional(propagation = Propagation.REQUIRES_NEW)
C;
try{
D;
}catch(Exception e){
// 随意
}
就可以导致回滚机制拿不到d抛出的异常,不做回滚处理。
在A,c处出现数据库异常会抛到外层方法导致回滚, 而B 只要执行了 跟他们事务隔离 不受影响。
另:如果java check异常也要加入到回滚机制 ,还需要配置rollbackfor
java中 spring 的事务问题
最近在项目的时候碰到pring事务不起作用的情况,后来解决了,这里我汇总下:
1、首先使用如下代码 确认你的bean 是代理对象吗?
必须是Spring定义(通过XML或注解定义都可以)的Bean才接受事务。
直接new出来的对象添加事务是不起作用的。
可以通过以下方式判断是否是代理对象:
AopUtils.isAopProxy(Object object)
AopUtils.isCglibProxy(Object object) //cglib
AopUtils.isJdkDynamicProxy(Object object) //jdk动态代理
2、入口函数必须是public,否则事务不起作用。这一点由Spring的AOP特性决定的。
3、切入点配置错误。
《!-- 使用annotation注解方式配置事务 --》
《tx:annotation-driven transaction-manager=“transactionManager“ proxy-target-class=“true“/》
《!--使用切面方式配置事务--》
《tx:advice id=“txadvice“ transaction-manager=“transactionManager“》
《tx:attributes》
《tx:method name=“*“ isolation=“READ_COMMITTED“ propagation=“REQUIRED“ rollback-for=“java.lang.Exception“ /》
《/tx:attributes》
《/tx:advice》
《aop:config》
《aop:pointcut id=“pointcut“ expression=“execution(* com.tyyd..*Service.do*(..))“/》
《aop:advisor advice-ref=“txadvice“ pointcut-ref=“pointcut“/》
《/aop:config》
4、如果你使用了springmvc,可能是context:component-scan重复扫描引起的:
5、如使用mysql且引擎是MyISAM造成的(因为不支持事务),改成InnoDB即可。
如何理解spring事物required
一、事务传播行为种类
Spring在TransactionDefinition接口中规定了7种类型的事务传播行为,
它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播:
事务传播行为类型
事务传播行为类型
说明
PROPAGATION_REQUIRED
如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见的选择。
PROPAGATION_SUPPORTS
支持当前事务,如果当前没有事务,就以非事务方式执行。
PROPAGATION_MANDATORY
使用当前的事务,如果当前没有事务,就抛出异常。
PROPAGATION_REQUIRES_NEW
新建事务,如果当前存在事务,把当前事务挂起。
PROPAGATION_NOT_SUPPORTED
以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
PROPAGATION_NEVER
以非事务方式执行,如果当前存在事务,则抛出异常。
PROPAGATION_NESTED
如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与PROPAGATION_REQUIRED类 似的操作。
spring REQUIRES_NEW 不好用
你的配置完全正确,但是你把两个方法放在一个类中了。
REQUIRES_NEW当 saveUser和updateUser这两个方法放在一个类中是不起作用的,跟REQUIRED没区别。应该把updateUser方法放在其他类中。
java中required和requireNew是什么意思
你说的是spring中的事务? 第一个是表示需要事务 如果已经存在合适的事务能拿来用就行 没有的合适的就新建 第二个表示即使存在合适的事务 也要新建一个来使用 参考http://www.ibm.com/developerworks/cn/java/j-lo-springejbtrans/
更多文章:
office2007 sp2(Microsoft Office 2007 SP2是什么意思)
2024年7月21日 18:09
课程表模板免费下载(求初中课程表模板(框框)最好空白,,用手机可以直接复制的那种)
2024年6月20日 05:55
老款经典街机游戏下载(求一款经典街机游戏的名称和下载地址!!!!)
2024年8月14日 02:15
星之卡比重返梦幻岛(星之卡比重返梦幻岛通了一遍以后,第二个红的解开,怎么还是用卡比,并且还是和第一遍一模一样,)
2024年3月26日 12:05
驱动精灵万能网卡驱动版安装包(驱动精灵万能网卡版怎么安装驱动)
2024年7月3日 16:14
淘宝特价版免费下载(下载淘特app,淘特app新用户帮忙 要新用户成功帮忙赞哦)
2024年9月26日 18:35
为什么用晨风修改器修改不了QQ分组颜色啊?怎么用晨风透明皮肤修改器把分组右移啊求解
2024年6月8日 04:03
window10文件资源管理器左侧栏消失,怎么显示出来?电脑文件管理器如何管理文件夹
2023年10月5日 01:40