欢迎来到天天文库
浏览记录
ID:40654600
大小:1.89 MB
页数:24页
时间:2019-08-05
《北大青鸟spring入门课程TP4》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第四章SpringAOP的应用回顾AOP的目的即在正常的业务操作之外增加的附加操作通过切入点(pointcut)指名进行哪些切面(aspect)操作ProxyFactoryBeaninterceptorNamestargetNameproxyInterfaces拦截器(Interceptor),通知(Advice),和切面的不同(Aspect)2AOP的应用事务切面日志切面其它附加操作切面3事务切面在介绍事务切面之前,回顾网上银行的项目,并使用SpringIOC注入业务实现类所需的sessionFactory实现步骤和问题思考:实现业务接口和业务实现类(AccountSer
2、vice、LogService)sessionFactory如何注入的,应该注入给谁?事务由谁来管理?4优化现在项目经理提出需求,希望改进代码的结构,达到如下目标:transfer方法(或其它业务方法)在执行时,事务自动开始在正确完成后,事务提交,并且关闭hibernatesession在出现RuntimeException(或其子类)异常时,事务回滚,并关闭hibernatesession其他异常,仍执行提交——关闭的操作5Spring的解决方案方案A:使用事务拦截器并代理业务实现类方案B:使用事务advice和aspect切面来实现事务拦截6方案A第一步,改写Accou
3、ntService业务实现类第二步,定义ProxyFactoryBean以返回AccountService代理对象proxyInterfacestargetNameinterceptorNames–这里添加事务拦截器7事务拦截器第三步定义事务拦截器84、nsfer">PROPAGATION_REQUIREDPROPAGATION_REQUIRES_NEW事务属性以及事务管理器ShowTime修改log4j.properties,以便观察Spring执行过程log4j.logger.org.springframework.aop=debuglog4j.logger.org.springframewo
4、nsfer">PROPAGATION_REQUIREDPROPAGATION_REQUIRES_NEW
5、rk.transaction=debuglog4j.logger.org.springframework.orm.hibernate3=debug9事务管理器Spring由于需要为多种数据层的实现提供集成支持,针对不同的情况,定义了各种事务管理器,一定要选择正确的事务管理器比如:DataSourceTransactionManager对应JDBC事务HibernateTransactionManager对应Hibernate提供的事务JtaTransactionManager对应JTA事务大多数事务管理器都需要设置dataSource(数据源)属性,对于HibernateT
6、ransactionManager可以只设置sessionFactory属性10事务属性常见的事务属性有:事务的传播行为事务的隔离级别事务是否只读——针对只读事务,Spring在某些情况下会提供优化11事务的传播行为以下的定义可以在TransactionDefinition中找到PROPAGATION_REQUIREDPROPAGATION_SUPPORTSPROPAGATION_MANDATORYPROPAGATION_REQUIRES_NEWPROPAGATION_NOT_SUPPORTEDPROPAGATION_NEVER12事务的传播行为PROPAGATION_RE
7、QUIRED——表示如果没有事务,则开始新的事务,事务已经存在,则加入当前事务PROPAGATION_SUPPORTS——表示如果事务已经存在,则加入当前事务,如果没有事务,不会开始新事务PROPAGATION_MANDATORY——表示必须有事务存在,并加入当前事务,否则抛出异常PROPAGATION_REQUIRES_NEW——表示每次都开始一个全新事务PROPAGATION_NOT_SUPPORTED——表示不会开始或加入事务PROPAGATION_NEVER——表示不会开始或加入事务,如果事务已存在,抛出异
此文档下载收益归作者所有