Spring之事务管理
关键字: 事物Spring之事务管理
EJB被人骂的够多了,除了SLSB(无状态SessionBean),CMT(Container-ManagedTransaction,容器管理事务)外,但是CMT依然需要以来ApplicationServer。Spring提供了比CMT更加轻量的,好用易用的事务管理。
org.springframework.transaction.PlatformTransactionManager:是Spring事务管理的核心接口,正如类名,他分离了平台独立性。配合Spring的beandefinition,他可以让我们在不同的事务平台上切换(jta->jdbc,etc)。
package org.springframework.transaction;
public interface PlatformTransactionManager {
TransactionStatus getTransaction(TransactionDefinition definition)
throws TransactionException;
void commit(TransactionStatus status) throws TransactionException;
void rollback(TransactionStatus status) throws TransactionException;
}
PlatformTransactionManager接口只有三个方法。Spring中使用AOP配合PlatformTransactionManager,可以使你感觉不到这个接口和他所依赖的类的存在。你需要做的只是在beandefinition中做写配置。你的代码不需要写一行关于事务的代码(特殊情况除外,如果你想在代码中控制事务的commit或rollback)。当然你也可以使用编程式事务处理(这里不做介绍,可以参数Springdocument)。
申明式事务管理
一种是使用AOPProxyFactoryBean 和TransactionInterceptor。
...
class="org.springframework.transaction.interceptor.TransactionInterceptor">
这种配置更加灵活,你可以加更多的interceptor到ProductService中,如securityInterceptor.
二使用易用的,便利的TransactionProxyFactoryBean
...
相比上面的代码,现在的代码少多了。我觉得Spring的类层次设计的非常合理,你可以使用其中的几个接口合并成另外一些大接口。如:ResourceBeanFactory。
发表评论
- 浏览: 220460 次
- 性别:

- 来自: 广州

- 详细资料
搜索本博客
我的相册
共 13 张
最近加入圈子
最新评论
-
使用Terracotta和Tomcat建 ...
renavatior 写道"运行start.bat 9081 这样我们就启动了目 ...
-- by rainsf -
使用Terracotta和Tomcat建 ...
"运行start.bat 9081 这样我们就启动了目录9081中的tomcat ...
-- by renavatior -
广州3年多经验 5500的 ...
fucku 写道广州的软件厂家可比深圳多多了,不过比起北京上海来,还是少了很多, ...
-- by yongfan_420 -
广州3年多经验 5500的 ...
广州的软件厂家可比深圳多多了,不过比起北京上海来,还是少了很多,导致机会也没有这 ...
-- by fucku -
广州3年多经验 5500的 ...
想高工资就去厂家咯,老在集成商里面混能有多大个奔头
-- by fucku






评论排行榜