学习记录仅供参考
Aop:
目录
面向切面编程,AOP是一种编程思想,是对面向对象(OOP)的补充;
具体的说就是在不修改源码的情况下给程序动态统一添加额外功能的一种技术.
AOP可以拦截指定的方法并且对方法增强,而且无需侵入到业务代码中,使业务与非业务处理逻辑分离,比如Spring的事务,通过事务的注解配置,Spring会自动在业务方法中开启、提交事务,并且在事务处理失败时,执行相应的回滚策略
AOP的作用:
1.AOP 采取横向抽取机制(动态代理),取代了传统纵向继承机制的重复性代码,其应用主要体现在事务处理、日志管理、权限控制、异常处理等方面。
2.主要作用是分离功能性需求和非功能性需求,使开发人员可以集中处理某一个关注点或者横切逻辑,减少对业务代码的侵入,增强代码的可读性和可维护性。
3.简单的说,AOP 的作用就是保证开发者在不修改源代码的前提下,为系统中的业务组件添加某种通用功能。
AOP的术语
AOP通知的分类
Spring AOP 织入时期
AOP的使用:
1.添加依赖
2.定义切点
例子:
代理模式:
简介
意图:为其他对象提供一种代理以控制对这个对象的访问。
主要解决:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层。
何时使用:想在访问一个类时做一些控制。
静态代理:
优缺点:
优点
好理解
缺点
1.代码冗余:当多个被代理类,多个需增强方法的增强内容一样时,代码重复冗余
2.不易维护:每个被代理类需要专门维护一个代理类,类成倍增加,需增强方法增加时,需要同时维护代理类和被代理类
例子:
1.创建被代理对象的实现接口以及实现类;
2.创建代理处理器
3.声明代理工厂以及测试:
动态代理:
动态代理--运行时动态地生成类字节码,加载进JVM
JDK动态代理(组合,被代理类必须实现接口)
实现过程:
1.创建被代理类的接口和实现类:
2.创建代理处理器:
3.创建代理工厂以及验证: