一.AOP : Aspect Oriented Programming
1.中文: 面向切面编程
定义:在程序原有的纵向运行流程中,针对某一个方法或某一些方法添加通知形成横向切面过程,称为面向切面编程。

2.AOP思想主要的应用场景
| AOP(面向切面编程)是一种编程范式,它通过将通用的横切关注点(如日志、事务、权限控制等)与业务逻辑分离,使得代码更加清晰、简洁、易于维护。AOP可以应用于各种场景,以下是一些常见的AOP应用场景: 1. 日志记录:在系统中记录日志是非常重要的,可以使用AOP来实现日志记录的功能,可以在方法执行前、执行后或异常抛出时记录日志。 2. 事务处理:在数据库操作中使用事务可以保证数据的一致性,可以使用AOP来实现事务处理的功能,可以在方法开始前开启事务,在方法执行完毕后提交或回滚事务。 3. 安全控制:在系统中包含某些需要安全控制的操作,如登录、修改密码、授权等,可以使用AOP来实现安全控制的功能。可以在方法执行前进行权限判断,如果用户没有权限,则抛出异常或转向到错误页面,以防止未经授权的访问。 4. 性能监控:在系统运行过程中,有时需要对某些方法的性能进行监控,以找到系统的瓶颈并进行优化。可以使用AOP来实现性能监控的功能,可以在方法执行前记录时间戳,在方法执行完毕后计算方法执行时间并输出到日志中。 5. 异常处理:系统中可能出现各种异常情况,如空指针异常、数据库连接异常等,可以使用AOP来实现异常处理的功能,在方法执行过程中,如果出现异常,则进行异常处理(如记录日志、发送邮件等)。 6. 缓存控制:在系统中有些数据可以缓存起来以提高访问速度,可以使用AOP来实现缓存控制的功能,可以在方法执行前查询缓存中是否有数据,如果有则返回,否则执行方法并将方法返回值存入缓存中。 7. 动态代理:AOP的实现方式之一是通过动态代理,可以代理某个类的所有方法,用于实现各种功能。 综上所述,AOP可以应用于各种场景,它的作用是将通用的横切关注点与业务逻辑分离,使得代码更加清晰、简洁、易于维护。 |
3.AOP术语名词介绍
| 切点: 原有功能。(目标方法) Pointcut 如:sub()方法 通知: 在切点前后执行。(代理的额外扩展方法) Advice --前置通知:在切点前执行 --返回通知:在切点成功结束后执行(**寿终正寝**) --异常通知:在切点出现异常后执行(**死于非命**) --后置通知:在切点最终结束后执行(**盖棺定论**) --环绕通知:使用try...catch...finally结构围绕整个被代理的目标方法,包括上面四种通知对应的所有位置] 切面: 所有功能统称。===>切点+通知 织入: 将通知切面嵌入到切点生成代理对象的过程。SpringAop会自动生成代理的对象 |
4.Spring Aop基于注解方式实现
4.1.Spring Aop 底层技术组成

| 动态代理(InvocationHandler):JDK原生的实现方式,需要被代理的目标类必须实现接口。因为这个技术要求代理对象和目标对象实现同样的接口(兄弟两个拜把子模式)。 cglib:通过继承被代理的目标类(认干爹模式)实现代理,所以不需要目标类实现接口 AspectJ:早期的AOP实现的框架,SpringAOP借用了AspectJ中的AOP注解。 |
4.2.实现步骤
- 准备工作,创建maven项目
1. pom.xml 加入依赖
| <dependencies> <!--测试--> |
2. 创建配置类
| @Configuration |
3. 准备计算器接口
| package com.bdqn.proxy; public interface Calculator {
|
2.准备纯净计算器的实现类
| package com.bdqn.proxy; /** |

最低0.47元/天 解锁文章
966

被折叠的 条评论
为什么被折叠?



