spring源码解析六

spring源码解析六

ID:14561651

大小:39.25 KB

页数:29页

时间:2018-07-29

spring源码解析六_第1页
spring源码解析六_第2页
spring源码解析六_第3页
spring源码解析六_第4页
spring源码解析六_第5页
资源描述:

《spring源码解析六》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、我们看看Spring中的事务处理的代码,使用Spring管理事务有声明式和编程式两种方式,声明式事务处理通过AOP的实现把事物管理代码作为方面封装来横向插入到业务代码中,使得事务管理代码和业务代码解藕。在这种方式我们结合IoC容器和Spirng已有的FactoryBean来对事务管理进行属性配置,比如传播行为,隔离级别等。其中最简单的方式就是通过配置TransactionProxyFactoryBean来实现声明式事物; 在整个源代码分析中,我们可以大致可以看到Spring实现声明式事物管理有这么几个部分:如转载请注明,转载自:关注Java[http://www.gbsou.

2、com]本文链接: Spring源代码解析(六):Spring声明式事务处理   *对在上下文中配置的属性的处理,这里涉及的类是TransactionAttributeSourceAdvisor,这是一个通知器,用它来对属性值进行处理,属性信息放在TransactionAttribute中来使用,而这些属性的处理往往是和对切入点的处理是结合起来的。对属性的处理放在类TransactionAttributeSource中完成。    *创建事物的过程,这个过程是委托给具体的事物管理器来创建的,但Spring通过TransactionStatus来传递相关的信息。    *对事物

3、的处理通过对相关信息的判断来委托给具体的事物管理器完成。我们下面看看具体的实现,在TransactionFactoryBean中:  Java代码 public class TransactionProxyFactoryBean extends AbstractSingletonProxyFactoryBean          implements FactoryBean, BeanFactoryAware {  //这里是Spring事务处理而使用的AOP拦截器,中间封装了Spring对事务处理的代码来支持声明式事务处理的实现       private final Tr

4、ansactionInterceptor transactionInterceptor = new TransactionInterceptor();        private Pointcut pointcut;    //这里Spring把TransactionManager注入到TransactionInterceptor中去       public void setTransactionManager(PlatformTransactionManager transactionManager) {          this.transactionInterce

5、ptor.setTransactionManager(transactionManager);      }    //这里把在bean配置文件中读到的事务管理的属性信息注入到TransactionInterceptor中去       public void setTransactionAttributes(Properties transactionAttributes) {          this.transactionInterceptor.setTransactionAttributes(transactionAttributes);      }       

6、 ………中间省略了其他一些方法…….        //这里创建Spring AOP对事务处理的Advisor       protected Object createMainInterceptor() {          this.transactionInterceptor.afterPropertiesSet();          if (this.pointcut != null) {              //这里使用默认的通知器               return new DefaultPointcutAdvisor(this.pointcut, 

7、this.transactionInterceptor);          }          else {              // 使用上面定义好的TransactionInterceptor作为拦截器,同时使用TransactionAttributeSourceAdvisor               return new TransactionAttributeSourceAdvisor(this.transactionInterceptor);          }      } 

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。