没有合适的资源?快使用搜索试试~ 我知道了~
AOP面向切面编程.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 180 浏览量
2022-07-02
22:00:23
上传
评论
收藏 1.15MB DOCX 举报
温馨提示
试读
32页
1.jdk动态代理:使用jdk中的Proxy,Method,InvocaitonHanderl创建代理对象,jdk动态代理要求目标类必须实现接口 2.cglib动态代理:第三方的工具库,创建代理对象,原理是继承。 通过继承目标类,创建子类,子类就是代理对象。 要求目标类不能是final的, 方法也不能是final的
资源推荐
资源详情
资源评论
AOP 面向切面编程
目录
一、 概述
o 简介
o 如何理解
二、 编程术语
o 切面
o 连接点
o 切入点
o 目标对象
o 通知
三、 对 的实现
o 的通知类型
o 的切入点表达式
o 的开发环境
四、 基于注解的 实现
o 实现步骤
o 前置通知
o ! 后置通知
o 环绕通知
o "#异常通知
o $ 最终通知
o % 定义切入点
五、总结
o 使用 框架实现
o !#
一、AOP 概述
1. AOP 简介
(&&),面向切面编程。面向切面编程是从动态
角度考虑程序运行过程
底层,就是采用动态代理模式实现的。采用了两种代理:'(的动态代理,
与 )*+, 的动态代理
可以看之前写的动态代理,
"-..###/0&.&..1%1%"&0
1. 2 动态代理:使用 2 中的 34,5",,60 创建代理对象,
2 动态代理要求目标类必须实现接口
2. 0/ 动态代理:第三方的工具库,创建代理对象,原理是继承。 通过继承目标类 ,
创建子类,子类就是代理对象。 要求目标类不能是 0 的, 方法也不能是 0 的
动态代理的作用:
在目标类源代码不改变的情况下,增加功能
减少代码的重复
专注业务逻辑代码
解耦合,让你的业务功能和日志分离,事务和非业务功能分离
2. 如何理解 AOP
(&&)面向切面编程
- 切面,给你的目标类增加的功能,就是切面,切面的特点: 一般都是非业
务方法,独立使用的
:面向
-面向对象编程
理解:
1. 需要在分析项目功能时,找出切面
2. 合理的安排切面的执行时间(在目标方法前, 还是目标方法后)
3. 合理的安全切面执行的位置,在哪个类,哪个方法增加增强功能
二、AOP 编程术语
1. 切面(Aspect)
表示增强的功能, 就是一堆代码,完成某个一个功能,非业务功能
常见的切面功能有日志, 事务, 统计信息, 参数检查, 权限验证
2. 连接点(JoinPoint)
连接业务方法和切面的位置,就某类中的业务方法
3. 切入点(Pointcut)
指多个连接点方法的集合,多个方法
4. 目标对象(Target)
给哪个类的方法增加功能, 这个类就是目标对象
5. 通知(Advice)
通知表示切面功能执行的时间
一个切面有三个关键的要素:
1. 切面的功能代码,切面是干什么
2. 切面的执行位置,使用 表示切面执行的位置
3. 切面的执行时间,使用 表示时间,在目标方法之前,还是目标方法之后
三、Aspectj 对 AOP 的实现
是一个规范,是动态的一个规范化,一个标准
aop 的技术实现框架:
1. : 在内部实现了 规范,能做 的工作,我们项目开发中很少使
用 的 实现。 因为 的 比较笨重
2. -一个开源的专门做 的框架。 框架中集成了 框架,通过
就能使用 的功能
aspectJ 框架实现 aop 有两种方式:
使用 3&0 的配置文件 : 配置全局事务
使用注解,我们在项目中要做 功能,一般都使用注解, 有 个注解
1. Aspectj 的通知类型
中常用的通知有五种类型
前置通知
后置通知
环绕通知
异常通知
最终通知
2. Aspectj 的切入点表达式
以上表达式共 个部分
execution(访问权限 方法返回值 方法声明(参数) 异常类型)
切入点表达式要匹配的对象就是目标方法的方法名。所以,3表达式中
明显就
是方法的签名。
注意,表达式中黑色文字表示可省略部分,各部分间用空格分开
在其中可以使用以下符号:
常用的几个:
execution(public * * (..))
指定切入点的位置:任意的公共方法
execution(* set*(..))
指定切入点的位置:任何一个以 开始的方法
execution(* com.xyz.service.*.*(..))
指定切入点的位置:定义在 包里的任意类的任意方法
execution(* com.xyz.service..*.*(..))
指定切入点的位置:定义在 包或者子包里的任意类的任意方法
..7出现在类名中时,后面必须跟*,表示包、子包下的所有类
execution(* *..service.*.*(..))
剩余31页未读,继续阅读
资源评论
小兔子平安
- 粉丝: 209
- 资源: 1940
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- VR开发的概要介绍与分析
- 自动驾驶定位系列教程七:点云畸变补偿.pdf
- HM2302D-VB一款N-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- HM2302B-VB一款N-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- springboot学生考勤管理系统
- HM2302A-VB一款N-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- HM2301-VB一款P-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- 数据可视化的概要介绍与分析
- HM2301E-VB一款P-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
- HM2301D-VB一款P-Channel沟道SOT23的MOSFET晶体管参数介绍与应用说明
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功