详解spring事件属性[Java编程]
本文“详解spring事件属性[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
Spring声明式事件让我们从复杂的事件处理中得到摆脱.使得我们再也无需求去处理得到衔接、关闭衔接、事件提交和回滚等这些操作.再也无需求我们在与事件相关的办法中处理大量的try…catch…finally代码.
我们在利用Spring声明式事件时,有一个非常重要的概念就是事件属性.事件属性普通由事件的传达行为,事件的断绝级别,事件的超时值和事件只读标志构成.我们在举行事件划分时,需求举行事件定义,也就是配置事件的属性.
Spring在TransactionDefinition接口中定义这些属性,以供PlatfromTransactionManager利用, PlatfromTransactionManager是spring事件管理的核心接口.
TransactionDefinition
public interface TransactionDefinition ...{
int getPropagationBehavior();
int getIsolationLevel();
int getTimeout();
boolean isReadOnly();
}
getTimeout()办法,它返回事件必须在多少秒内完成.
isReadOnly(),事件能否只读,事件管理器可以按照这个返回值举行优化,确保事件是只读的.
getIsolationLevel()办法返回事件的断绝级别,事件管理器按照它来掌握别的一个事件可以看到本领务内的哪些数据.
在TransactionDefinition接口中定义了五个差别的事件断绝级别
ISOLATION_DEFAULT 这是一个PlatfromTransactionManager默许的断绝级别,利用数据库默许的事件断绝级别.别的四个与
JDBC的断绝级别相对象
ISOLATION_READ_UNCOMMITTED 这是事件最低的断绝级别,它充许别外一个事件可以看到这个事件未提交的数据.这种断绝级别会产生脏读,不可反复读和幻像读.
比方:
Mary的原工资为1000,财政人员将Mary的工资改成了8000,但未提交事件
Connection con1 = getConnection();
con.setAutoCommit(false);
update employee set salary = 8000 where empId ="Mary";
与此同时,Mary正在读取自己的工资
Connection con2 = getConnection();
select salary from employee where empId ="Mary";
con2.commit();
Mary发现自己的工资变成了8000,欢天喜地!
而财政发现操作有误,而回滚了事件,Mary的工资又变成了1000.
//con1
con1.rollback();
像这样,Mary记着的工资数8000是一个脏数据.
以上是“详解spring事件属性[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |