JavaEE企业级项目开发单元7-任务3-审批申请设计_第1页
JavaEE企业级项目开发单元7-任务3-审批申请设计_第2页
JavaEE企业级项目开发单元7-任务3-审批申请设计_第3页
JavaEE企业级项目开发单元7-任务3-审批申请设计_第4页
JavaEE企业级项目开发单元7-任务3-审批申请设计_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Struts2+Hibernate+SpringJavaEE 企业级项目开发单元七 工作流转任务3 审批申请设计1任务简介2任务分析3相关支撑知识4任务小结目录页第1页任务3 审批申请设计过渡页第2页过渡页任务简介任务3 审批申请设计任务简介本任务的目标是学习学习Spring声明式事务:了解Spring的声明式事务掌握三种声明式事务如何使用能在修改申请模块应用声明式事务进行处理第3页过渡页第4页过渡页任务分析任务3 审批申请设计任务分析Spring声明式事务:基于AOP机制事务处理的相关API不用介入到程序之中,使事务管理更简单、方便Spring声明式事务事务分为三种类型:基于 Transac

2、tionInter的声明式事务管理基于 命名空间的声明式事务管理基于Spring注解方式的事务管理配置第5页过渡页第6页过渡页相关支撑知识相关支撑知识Spring 的声明式事务管理底层建立在 AOP 基础上本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务声明式事务优点不需要通过编程的方式管理事务,不需要在业务逻辑代码中掺杂事务管理的代码只需在配置文件中做相关的事务规则声明(或通过等价的基于标注的方式),便可以将事务规则应用到业务逻辑中事务管理是一个典型的横切逻辑。AOP为声明式事务提供了简单而强大的支持第7页一Spring的

3、声明式事务任务3 审批申请设计相关支撑知识和编程式事务相比声明式事务唯一不足地方是,后者的最细粒度只能作用到方法级别,无法做到像编程式事务那样可以作用到代码块级别但是即便有这样的需求,也存在很多变通的方法,比如,可以将需要进行事务管理的代码块独立为方法等等第8页一Spring的声明式事务任务3 审批申请设计相关支撑知识和编程式事务相比声明式事务唯一不足地方是,后者的最细粒度只能作用到方法级别,无法做到像编程式事务那样可以作用到代码块级别但是即便有这样的需求,也存在很多变通的方法,比如,可以将需要进行事务管理的代码块独立为方法等等第9页一Spring的声明式事务任务3 审批申请设计相关支撑知识T

4、ransactionInterceptor 类 实施声明式事务管理功能。基于 TransactionInterceptor 的事务管理示例配置文件第10页基于 TransactionInter的声明式事务管理1一Spring的声明式事务任务3 审批申请设计 PROPAGATION_REQUIRED 相关支撑知识配置文件说明:配置了一个 TransactionInterceptor 来定义相关的事务规则它有两个主要的属性:一个是 transactionManager,用来指定一个事务管理器,并将具体事务相关的操作委托给它另一个是 Properties 类型的 transactionAttribu

5、tes 属性,主要用来定义事务规则,该属性的每一个键值对中,键指定的是方法名,方法名可以使用通配符,而值就表示相应方法的所应用的事务属性第11页基于 TransactionInter的声明式事务管理1一Spring的声明式事务任务3 审批申请设计相关支撑知识指定事务属性的取值有较复杂的规则:第12页基于 TransactionInter的声明式事务管理1一Spring的声明式事务任务3 审批申请设计传播行为 ,隔离级别 ,只读属性 ,超时属性 不影响提交的异常 ,导致回滚的异常传播行为必须设置,取值必须以“PROPAGATION_”开头,具体包括:PROPAGATION_MANDATORYPR

6、OPAGATION_NESTEDPROPAGATION_NEVERPROPAGATION_NOT_SUPPORTEDPROPAGATION_REQUIREDPROPAGATION_REQUIRES_NEWPROPAGATION_SUPPORTS 隔离级别的取值必须以“ISOLATION_”开头,具体包括:ISOLATION_DEFAULTISOLATION_READ_COMMITTEDISOLATION_READ_UNCOMMITTEDISOLATION_REPEATABLE_READISOLATION_SERIALIZABLE相关支撑知识如果事务是只读的,使用“readOnly”指定。否则不

7、需要设置该属性。 超时属性取值必须以“TIMEOUT_”开头,后面跟一个int类型的值,表示超时时间,单位是秒。 不影响提交的异常是指,即使事务中抛出了这些类型的异常,事务任然正常提交。必须在每一个异常的名字前面加上“+”。异常的名字可以是类名的一部分。比如“+RuntimeException”、“+tion”等等。导致回滚的异常是指,当事务中抛出这些类型的异常时,事务将回滚。必须在每一个异常的名字前面加上“-”。异常的名字可以是类名的全部或者部分,比如“-RuntimeException”、“-tion”等等。第13页基于 TransactionInter的声明式事务管理1一Spring的声

8、明式事务任务3 审批申请设计相关支撑知识示例1:第14页基于 TransactionInter的声明式事务管理1一Spring的声明式事务任务3 审批申请设计PROPAGATION_REQUIRED,ISOLATION_READ_COMMITTED,TIMEOUT_20, +AbcException,+DefException,-HijException针对所有方法名以 Service 结尾的方法,使用 PROPAGATION_REQUIRED 事务传播行为,事务的隔离级别是 ISOLATION_READ_COMMITTED,超时时间为20秒,当事务抛出 AbcException 或者 Def

9、Exception 类型的异常,则仍然提交,当抛出 HijException 类型的异常时必须回滚事务。这里没有指定“readOnly”,表示事务不是只读的。相关支撑知识示例2:第15页基于 TransactionInter的声明式事务管理1一Spring的声明式事务任务3 审批申请设计property name=testPROPAGATION_REQUIRED,readOnly针对所有方法名为 test 的方法,使用 PROPAGATION_REQUIRED 事务传播行为,并且该事务是只读的。除此之外,其他的属性均使用默认值。比如,隔离级别和超时时间使用底层事务性资源的默认值,并且当发生未检

10、查异常,则回滚事务,发生已检查异常则仍提交事务。相关支撑知识配置ProxyFactoryBean 来组装 target 和advice典型的 Spring AOP 的做法通过 ProxyFactoryBean 生成的代理类就是织入了事务管理逻辑后的目标类第16页基于 TransactionInter的声明式事务管理1一Spring的声明式事务任务3 审批申请设计没有对业务代码进行任何操作,所有设置均在配置文件中完成,这就是声明式事务的最大优点。相关支撑知识声明式事务缺点:虽然好,但配置文件太多必须针对每一个目标对象配置一个 ProxyFactoryBean虽然可以通过父子 Bean 的方式来复

11、用 TransactionInterceptor 配置,但实际的复用几率也不高加上目标对象本身,一个业务类可能需要对应三个 配置,随着业务类的增多,配置文件将会变得越来越庞大,管理配置文件又成了问题解决方法:Spring 提供了 TransactionProxyFactoryBean,用于将TransactionInterceptor 和 ProxyFactoryBean 的配置合二为一第17页基于 TransactionInter的声明式事务管理1一Spring的声明式事务任务3 审批申请设计相关支撑知识基于 TransactionProxyFactoryBean 的事务管理示例配置文件,如

12、下所示第18页基于 TransactionInter的声明式事务管理1一Spring的声明式事务任务3 审批申请设计 PROPAGATION_REQUIRED Spring 经典声明式事务管理相关支撑知识第19页任务3 审批申请设计基于 TransactionInter的声明式事务管理1声明式事务【例7-2】 Spring 支持声明式事务实例 com.microsoft.jdbc.sqlserver.SQLServerDriver jdbc:microsoft:sqlserver:/localhost:1433;Databasename=webOA sa sa 配置文件spring.xml的代

13、码如下一Spring的声明式事务相关支撑知识第20页任务3 审批申请设计基于 TransactionInter的声明式事务管理1声明式事务【例7-2】 Spring 支持声明式事务实例 配置文件spring.xml的代码如下一Spring的声明式事务相关支撑知识第21页任务3 审批申请设计基于 TransactionInter的声明式事务管理1声明式事务【例7-2】 Spring 支持声明式事务实例 com.my.test.IUserDAO PROPAGATION_REQUIRED,-Exception 配置文件spring.xml的代码如下一Spring的声明式事务相关支撑知识配置文档说明:

14、TransactionProxyFactoryBean需要一个TransactionManager,由于这里使用的是JDBC,所以使用DataSourceTransactionManager,TransactionProxyFactoryBean是个代理对象,“target”属性指定要代理的对象,事务管理会自动介入指定的方法前后,这里使用 “transactionAttributes”属性指定“insert*” 表示指定方法名称以insert开头的都要纳入事务管理,您也可以指定方法全名,如果在方法执行过程中发生错误,则所有先前的操作自动撤回,否则正常提交。在“insert*”等方法上指定了 “

15、PROPAGATION_REQUIRED”,表示在目前的事务中执行操作,如果事务不存在就建立一个新的,相关的常数意义都可以在API文件的TransactionDefinition接口中找到。第22页基于 TransactionInter的声明式事务管理1一Spring的声明式事务任务3 审批申请设计相关支撑知识Spring 3引入了 命名空间:结合使用 命名空间,带给开发人员配置声明式事务的全新体验,配置变得更加简单和灵活 命名空间的切点表达式支持,声明式事务也变得更加强大第23页基于 命名空间的声明式事务管理2一Spring的声明式事务任务3 审批申请设计基于 的事务管理示例配置文件如下所示

16、相关支撑知识Spring 3引入了 命名空间:第24页基于 命名空间的声明式事务管理2一Spring的声明式事务任务3 审批申请设计如果默认的事务属性就能满足要求,简化后的基于 的事务管理示例配置文件由于使用了切点表达式,就不需要针对每一个业务类创建一个代理对象了。另外,如果配置的事务管理器 Bean 的名字取值为“transactionManager”,则可以省略 的 transaction-manager 属性,因为该属性的默认值即为“transactionManager”相关支撑知识Spring 3为事务管理提供了Transactional注解,通过为Transactional指定不同的

17、参数,以满足不同的事务管理需求第25页二基于Spring注解方式的事务管理任务3 审批申请设计相关支撑知识Spring 3使用Transactional注解进行事务管理第26页二基于Spring注解方式的事务管理任务3 审批申请设计相关支撑知识Spring 3使用Transactional注解进行事务管理第27页二基于Spring注解方式的事务管理任务3 审批申请设计现将UserDaoImpl组件中的方法使用Transactional注解实现事务管理/*用户管理底层数据访问接口实现,使用Transactional注解实现事务管理*/TransactionalpublicclassUserDao

18、ImplimplementsUserDao /通过Resource注解注入Spring提供的JDBCTemplate实例 ResourceJdbcTemplatejdbcTemplate; /处理新增用户业务逻辑,使用Transactional注解实现该方法的事务管理 Transactional(rollbackFor=RuntimeException.class) /处理删除用户业务逻辑,使用Transactional注解实现该方法的事务管理 TransactionalpublicvoiddelUser(Integerid) /处理装载用户业务逻辑,使用Transactional注解设置该方法不需要事务 Transact

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论