AOP面向切面编程
1、AOP概述
AOP面向切面编程,就是在层与层之间加入代码,成为切面代码,主要目的是在某些情况下,让层与层之间的耦合度进一步降低。使用接口+IOC+DI已经能够很好的进行解耦合了。
AOP比较难理解的,需要准备一些场景代码讲解。
2、修改Service层的代码,增加功能性代码
public void addUser() {
System.out.println("#记录日志");
System.out.println("#权限控制");
System.out.println("#开启事务");
System.out.println("调用Dao层的方法,完成新增用户...");
System.out.println("#提交事务");
}
业务代码和功能代码混淆在一块了,比较乱,混杂。相当于把日记的内容和上课记笔记的内容写一个一起。
企业开发要保证六字真言:高内聚,低耦合。
高内聚:每一个组件,每一个层只干自己的事情,绝不越界。 AOP
低耦合:每个组件,每一个层之间耦合度降到最低。接口+Spring IOC+DI
3、AOP的概念,解决功能代码和业务代码的分离
4、代理模式 --AOP底层的核心实现技术思想
代理模式的核心思想:在不改变一个类的情况下增强该类中的方法
- (1)静态代理
可以解决代码混杂的问题,无法解决代码重复的问题 - (2)动态代理 --java提供Proxy类
既可以解决代码混杂的问题,也可以解决代码重复的问题
缺陷:基于接口的方式实现的,不在接口中存在的方法是访问不了的 - (3)第三方动态代理 – cglib代理
既可以解决代码混杂的问题,也可以解决代码重复的问题
cglib代码是基于继承实现的,对于非接口的方法依然是可以访问的