Spring和服务层.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Spring提供了编程事务的支持,它主要有两种方式: 直接使用PlatformTransactionManager接口; 使用TransactionTemplate模板类。 使用PlatformTransactionManager接口 声明型事务 编程型事务的管理代码分散到业务功能Bean中难于维护和管理。编写的代码可读性差。 声明型事务解决了这些问题,它将事务处理的代码从业务功能Bean中分离出来,使业务功能Bean中没任何与事务处理有关的代码。 我们在配置文件中定义事务的规则和行为,当业务方法被调用的时候由框架读取配置文件,根据配置文件定义的事务行为来管理事务。 在图5.10所示的是一个声明型事务示意图,原本是【表示层对象】→【服务层接口】→【服务层实现】→【DAO接口】这样的一个调用关系,现在在服务层添加了一个“事务代理对象”,变成了【表示层对象】→【服务层接口】→【事务代理对象】→【服务层实现】→【DAO接口】这样的一个调用关系。这个“事务代理对象”是Spring 框架实现声明型事务的核心。“事务代理对象”不需要我们自己编写这个对象。Spring提供这个对象,我们只需要在配置文件中配置好这个对象即可,并指定它要管理的对象。 修改为声明型事务,依赖关系图 在配置文件中我们添加一个Bean的id属性为userLoginServiceProxy对象,这个Bean是org.springframework.transaction.interceptor.TransactionProxyFactoryBean类型, TransactionProxyFactoryBean是Spring提供的一个“事务代理对象”。它有三个属性要求配置分别是: transactionManager,属性是配置事务管理器,我们这里事务管理器是Hibernate3的HibernateTransactionManager对象。 target,属性是配置“事务代理对象”要管理的目标对象即业务功能Bean,我们这里是UserLoginImpl3对象。 transactionAttributes,属性是最麻烦的一个属性了,这个属性用来定义事务的事务的规则和行为。prop key=log*PROPAGATION_REQUIRED/prop中key是指定要管理的方法,这里采用通配符方式。prop/prop中配置的内容如图5.12所示。 传播类型,定义了事务处理边界,Spring有多种事务传播方式,PROPAGATION_MANDATORY,PROPAGATION_NESTED,PROPAGATION_NEVER,PROPAGATION_NOT_SUPPORTED,PROPAGATION_REQUIRED,PROPAGATION_REQUIRES_NEW和PROPAGATION_SUPPORTS, PROPAGATION_REQUIRED是指当前方法必须放到一个事务里,如果当前有一个事务在运行则加入进来,如果没有事务则开始一个新的事务。 PROPAGATION_REQUIRES_NEW是指当前方法必须在一个事务里,如果当前有一个事务正在运行,则挂起这个运行事务,开始一个新事务。其它的转播方法我们就不再介绍大家如果有需要可以自己查查Spring API。 隔离级别,主要考虑并发访问题。ISOLATION_DEFAULT,ISOLATION_READ_UNCOMMITTED,ISOLATION_READ_COMMITTED,ISOLATION_REPEATABLE_READ,ISOLATION_SERIALIZABLE。每一项内容大家可以查看Spring API。 是否为只读事务,使用这个一选项,事务管理器会尽可能的利用使用数据库的优化特性。 回滚规则,通过这一项可以设定当出现异常的时候,是回滚事务还是提交事务,-Exception代表出现异常事务回滚,+Exception代表出现异常事务提交。 服务层声明型事务代码 总结 综上所述,在程序清单5.11中我们看不到任何与事务处理有关的代码。可见声明型事务可以给我们带来很多好处。把繁琐困难的事务管理工作交给框架来管理,使程序员将精力集中在业务处理上面。而且,声明型事务还可以方便修改事务的规则和行为,因为这些规则和行为是写在配置文件中的,修改文件既可,不像编程型事务要修改代码。声明型事务早期出现在EJB中,这一优秀的设计思想影响着今天的很多框架。所以如果我们没有什么特殊的理由,我们都应该在我们的应用系统中使用声明型事务。 学员实践 Spring框架高级开发工程师培训 中程在线(北京)科技有限公司 内部教程 注意保密 第5章 Spring与服务层 学习内容 什么是服务层 Sprng的事务管理 什么是服务层? 初学者对于服务层究竟干

文档评论(0)

0520 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档