JavaEE企业级项目开发(第3版)课件 微课6-5:基于Spring注解方式的事务管理配置_第1页
JavaEE企业级项目开发(第3版)课件 微课6-5:基于Spring注解方式的事务管理配置_第2页
JavaEE企业级项目开发(第3版)课件 微课6-5:基于Spring注解方式的事务管理配置_第3页
JavaEE企业级项目开发(第3版)课件 微课6-5:基于Spring注解方式的事务管理配置_第4页
JavaEE企业级项目开发(第3版)课件 微课6-5:基于Spring注解方式的事务管理配置_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

主讲人:石云延迟符基于Spring注解方式的事务管理配置Spring的数据库开发与事务Spring的声明式事务

底层建立在AOP基础上。本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。Spring的声明式事务

声明式事务,有以下优点。不需要通过编程的方式管理事务,不需要在业务逻辑代码中掺杂事务管理的代码。事务管理是一个典型的横切逻辑。AOP为声明式事务提供了简单而强大的支持。只需在配置文件中做相关的事务规则声明(或通过等价的基于标注的方式),便可以将事务规则应用到业务逻辑中。Spring的声明式事务1.基于TransactionInter的声明式事务管理Spring提供了TransactionInterceptor类来实施声明式事务管理功能。Spring的声明式事务<beanid="transactionInterceptor"class="erceptor.TransactionInterceptor"><propertyname="transactionManager"ref="transactionManager"/><propertyname="transactionAttributes"><props><propkey="transfer">PROPAGATION_REQUIRED</prop></props></property></bean><beanid="bankServiceTarget"class="footmark.spring.core.tx.declare.origin.BankServiceImpl"><propertyname="bankDao"ref="bankDao"/></bean><beanid="bankService"class="org.springframework.aop.framework.ProxyFactoryBean"><propertyname="target"ref="bankServiceTarget"/><propertyname="interceptorNames"><list><idrefbean="transactionInterceptor"/></list></property></bean>Spring的声明式事务指定事务属性的取值的规则传播行为[,隔离级别][,只读属性][,超时属性][不影响提交的异常][,导致回滚的异常]传播行为必须设置,取值必须以“PROPAGATION_”开头,具体包括:PROPAGATION_MANDATORYPROPAGATION_NESTEDPROPAGATION_NEVERPROPAGATION_NOT_SUPPORTEDPROPAGATION_REQUIREDPROPAGATION_REQUIRES_NEWPROPAGATION_SUPPORTS隔离级别的取值必须以“ISOLATION_”开头,具体包括:ISOLATION_DEFAULTISOLATION_READ_COMMITTEDISOLATION_READ_UNCOMMITTEDISOLATION_REPEATABLE_READISOLATION_SERIALIZABLESpring的声明式事务示例1:<propertyname="*Service">PROPAGATION_REQUIRED,ISOLATION_READ_COMMITTED,TIMEOUT_20,+AbcException,+DefException,-HijException</property>针对所有方法名以Service结尾的方法,使用PROPAGATION_REQUIRED事务传播行为,事务的隔离级别是ISOLATION_READ_COMMITTED,超时时间为20秒,当事务抛出AbcException或者DefException类型的异常,则仍然提交,当抛出HijException类型的异常时必须回滚事务。这里没有指定“readOnly”,表示事务不是只读的。Spring的声明式事务示例2:<propertyname="test">PROPAGATION_REQUIRED,readOnly</property>针对所有方法名为test的方法,使用PROPAGATION_REQUIRED事务传播行为,并且该事务是只读的。除此之外,其他的属性均使用默认值。比如,隔离级别和超时时间使用底层事务性资源的默认值,并且当发生未检查异常,则回滚事务,发生已检查异常则仍提交事务。Spring的声明式事务【例6-2】Spring支持声明式事务实例。配置文件spring.xml的代码如下:<context:property-placeholderlocation="classpath:perties"/><!--配置数据源--><beanid="dataSource"class="mons.dbcp2.BasicDataSource"> <propertyname="driverClassName"value="${db.driver}"/> <propertyname="url"value="${db.url}"/> <propertyname="username"value="${db.username}"/> <propertyname="password"value="${db.password}"/> <propertyname="maxIdle"value="5"/></bean><beanid="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><propertyname="dataSource"><refbean="dataSource"/></property></bean>

Spring的声明式事务<beanid="jdbcTemplate"class="org.springframework.jdbc.core.JdbcTemplate" p:dataSource-ref="dataSource"/><!--声明式事务--><beanid="userInfoDao"class="cn.js.ccit.dao.UserInfoDAO"> <propertyname="dataSource"> <refbean="dataSource"/> </property> <propertyname="template"> <refbean="jdbcTemplate"/> </property></bean>

【例6-2】Spring支持声明式事务实例。配置文件spring.xml的代码如下:Spring的声明式事务<!--代理--><beanid="userInfoDAOProxy" class="erceptor.TransactionProxyFactoryBean"> <propertyname="proxyInterfaces"> <list> <value>cn.js.ccit.dao.IUserInfoDAO</value> </list> </property> <propertyname="target"> <refbean="userInfoDao"/> </property> <propertyname="transactionManager"> <refbean="transactionManager"/> </property> <propertyname="transactionAttributes"> <props> <propkey="insert*">PROPAGATION_REQUIRED</prop> </props> </property></bean>

Spring的声明式事务2.基于<tx>命名空间的声明式事务管理Spring3引入了<tx>命名空间,结合使用<aop>命名空间,带给开发人员配置声明式事务的全新体验,配置变得更加简单和灵活。另外,得益于<aop>命名空间的切点表达式支持,声明式事务也变得更加强大。Spring的声明式事务基于<tx>的事务管理示例配置文件如下所示:<beanid="bankService"class="space.BankServiceImpl"><propertyname="bankDao"ref="bankDao"/></bean><tx:adviceid="bankAdvice"transaction-manager="transactionManager"><tx:attributes><tx:methodname="transfer"propagation="REQUIRED"/></tx:attributes></tx:advice><aop:config><aop:pointcutid="bankPointcut"expression="execution(**.transfer(..))"/><aop:advisoradvice-ref="bankAdvice"pointcut-ref="bankPointcut"/></aop:config>Spring的声明式事务如果默认的事务属性就能满足要求,简化后的基于<tx>的事务管理示例配置文件,如下所示:<beanid="bankService"class="space.BankServiceImpl"><propertyname="bankDao"ref="bankDao"/></bean><tx:adviceid="bankAdvice"transaction-manager="transactionManager"><aop:config><aop:pointcutid="bankPointcut"expression="execution(**.transfer(..))"/><aop:advisoradvice-ref="bankAdvice"pointcut-ref="bankPointcut"/></aop:config>基于Spring注解方式的事务管理配置Spring5为事务管理提供了@Transactional注解,通过为@Transactional指定不同的参数,以满足不同的事务管理需求。基于Spring注解方式的事务管理配置参数名称功能描述readOnly该属性用于设置当前事务是否为只读事务,设置为true表示只读,false则表示可读写,默认值为false。rollbackFor该属性用于设置需要进行回滚的异常类数组,当方法中抛出指定异常数组中的异常时,则进行事务回滚。rollbackForClassName该属性用于设置需要进行回滚的异常类名称数组,当方法中抛出指定异常名称数组中的异常时,则进行事务回滚。noRollbackFor该属

温馨提示

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

评论

0/150

提交评论