版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SpringAOP本章目标了解SpringAOP机制的基本原理掌握SpringAOP的配置了解SpringAOP中的通知类型掌握SpringAOP的应用为什么需要AOP什么是AOPAOP是Aspect-OrientedProgrmming的简称,意思是面向方面编程。在业务系统中,总有一些散落、渗透到系统各处而且不得不处理的事情,比如安全验证。我们需要在页面上判断用户是否登录、当前登录用户是否有权限访问该页面,在action代码里还要限制用户是否通过直接在URL输入路径中绕过了页面的权限控制代码,甚至在业务层代码里,还要限制不同用户访问的不同数据。如何使用AOP假设,我们要给一个购书系统的业务逻辑方法添加业务日志功能,要求在其业务方法调用前记录日志,记录方法调用的时间,调用的业务方法名和调用的参数。分析本需求:我们先给出业务方法的实现,这里的业务代码仅是单纯的业务逻辑,没有日志记录。因为在AOP的思想里,日志代码是单独实现的,不能加在业务方法代码中。我们可以在运行逻辑代码之前做“织入”工作,将“方面代码”织入到业务系统中。实现模拟业务系统仅模拟业务逻辑层的两个方法:buy(购书)和comment(添加书评)。在使用Sping的时候,业务逻辑层也常被称作“服务层”。对应地,BookBiz也可命名为BookService。这仅是命名方式的不同,二者皆可,这里我们使用Biz的命名方式。编写方面代码这个分类是根据通知织入到业务代码时执行的时间划分的。前置通知是在方法执行前自动执行的通知,后置通知是在方法执行后自动执行的通知,环绕通知能力最强,它可以在方法调用前执行通知代码,可以决定是否还调用目标方法将方面代码织入到业务对象中如果直接访问原来的Bean,通知代码肯定不会被执行。Spring采用“代理”的方式将通知织入到原Bean中。Spring将原Bean和通知都封装到xyfactory代理类别中。用户通过访问代理类访问原Bean,这样就能保证在目标方法调用前先执行前置通知的代码了。无需一行程序代码,只需要通过配置完成织入的过程即可,配置工作仍然是在Spring配置文件中完成的。AOP中的概念Aspect(切面):切面指横切性关注点的抽象,它与类相似,只是两者的关注点不一样,类是对物体特征的抽象,而切面是对横切性关注点的抽象。JoinPoint(连接点):所谓连接点是指那些被拦截到的点。在Spring中,这些点指的是方法,因为Spring只支持方法类型的连接点(实际上连接点还可以是Field或类构造器)。Pointcut(切入点):所谓切入点是指我们要对哪些连接点进行拦截的定义。Advice(通知):所谓通知是指拦截到连接点之后所要做的事情。通知分为前置通知,后置通知,异常通知,最终通知和环绕通知。Target(目标对象):代理的目标对象。Weave(织入):织入是指将切面应用到目标对象并导致代理对象创建的过程。Introduction(引入):在不修改类代码的前提下,Introduction可以在运行期为类动态地添加一些方法或Field。使用Spring进行面向切面编程基于注解方式声明切面首先,启动对@Aspect注解的支持;接着,基于注解方式声明切面;最后,编写测试代码。基于XML配置方式声明切面首先,在Spring的配置文件中引入aop命名空间;接着,基于XML配置方式声明切面;然后,定义接口OrderService,再来定义该接口的实现类;最后在Spring配置文件Spring+JDBC组合开发JdbcTemplate是core包的核心类。它替我们完成了资源的创建以及释放工作,从而简化了JDBC的使用,通过传递一个DataSource引用来完成JdbcTemplate的实例化。JdbcTemplate的常用方法包括:update()方法:可以执行insert、update和delete语句。queryForXXX()方法:可以执行select语句。使用Spring+JDBC集成步骤使用Spring+JDBC集成步骤如下第一步,配置数据源第二步,配置事务配置事务时,需要在XML配置文件中引入用于声明事务的tx命名空间,事务的配置方式有两种:注解方式和基于XML配置方式。在Spring配置文件中引入用于声明事务的tx命名空间:事务传播属性
REQUIRED:业务方法需要在一个事务中运行。如果方法运行时,已经处在一个事务中,那么加入到该事务,否则为自己创建一个新的事务。NOT_SUPPORTED:声明方法不需要事务。如果方法没有关联到一个事务,容器不会为它开启事务。如果方法在一个事务中被调用,该事务会被挂起,在方法调用结束后,原先的事务便会恢复执行。REQUIRESNEW:属性表明不管是否存在事务,业务方法总会为自己发起一个新的事务。如果方法已经运行在一个事务中,则原有事务会被挂起,新的事务会被创建,直到方法执行结束,新事务才算结束,原先的事务才会恢复执行。MANDATORY:该属性指定业务方法只能在一个已经存在的事务中执行,业务方法不能发起自己的事务。如果业务方法在没有事务的环境下调用,容器就会抛出例外。SUPPORTS:这一事务属性表明,如果业务方法在某个事务范围内被调用,则方法成为该事务的一部分。如果业务方法在事务范围外被调用,则方法在没有事务的环境下执行。Never:指定业务方法绝对不能在事务范围内执行。如果业务方法在某个事务中执行,容器会抛出例外,只有业务方法没有关联到任何事务,才能正常执行。NESTED:如果一个活动的事务存在,则运行在一个嵌套的事务中.如果没有活动事务,则按REQUIRED属性执行.它使用了一个单独的事务,这个事务拥有多个可以回滚的保存点。内部事务的回滚不会对外部事务造成影响。它只对DataSourceTransactionManager事务管理器有效。事务传播属性
MANDATORY:该属性指定业务方法只能在一个已经存在的事务中执行,业务方法不能发起自己的事务。如果业务方法在没有事务的环境下调用,容器就会抛出例外。SUPPORTS:这一事务属性表明,如果业务方法在某个事务范围内被调用,则方法成为该事务的一部分。如果业务方法在事务范围外被调用,则方法在没有事务的环境下执行。Never:指定业务方法绝对不能在事务范围内执行。如果业务方法在某个事务中执行,容器会抛出例外,只有业务方法没有关联到任何事务,才能正常执行。NESTED:如果一个活动的事务存在,则运行在一个嵌套的事务中.如果没有活动事务,则按REQUIRED属性执行.它使用了一个单独的事务,这个事务拥有多个可以回滚的保存点。内部事务的回滚不会对外部事务造成影响。它只对DataSourceTransactionManager事务管理器有效。总结AOP的目的是从系统中分离出方面,独立于业务逻辑实现,在程序执行时织入程序中运行。方面代码在AOP中以通知的形式封装。通知分前置通知、后置通知、环绕通知和异常通知。Spring配置文件是完成组装的主要场所,常用节点包括<
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《劳动用工协议》
- 西餐厅顾客投诉处理制度
- XXXX学校2021年课外活动工作总结
- 物流配送效率提升方案
- 幼儿园教研组长工作总结与家园合作
- 商务接送车辆租赁协议书
- 餐饮业共享盘供应链管理方案
- 2024-2025学年河北省邢台市质检联盟高三上学期第一次月考物理试题及答案
- 金融行业监控室风险预警方案
- 建筑项目结算审核服务方案
- 医务人员职业暴露预防及处理课件(完整版)
- 期中阶段性练习(一~四单元)(试题)-2024-2025学年五年级上册数学苏教版
- 《病人安全护理学》-教学大纲
- 项目分成比例合同模板
- CJT 497-2016 城市轨道交通桥梁伸缩装置
- 中外政治思想史-形成性测试二-国开(HB)-参考资料
- 理论力学习题集含答案
- 驱动压在肺保护性通气策略中的研究进展(全文)
- 公路工程施工安全技术规范
- “碑学”、“帖学”献疑.doc
- 四宗宗义比较略记
评论
0/150
提交评论