AOP意思是:面向切面编程。好处:能够降低耦合度、提高程序的可重用性、开发效率。
直白语言解释:就是调用一个方法之前或者之后,自动执行的一系列自定义语句。
底层原理:使用代理的机制。
- 接口 + 实现类 : 使用jdk动态代理。
- 只有实现类 :spring采用cglib字节码增强,在运行时创建目标类的子类,从而对目标类增强。
术语
- target:目标类,需要被代理的类,例如:UserService
- Joinpoint:连接点,可能会被拦截的方法,例如:UserService里面的所有方法 —>厕所里面的的所有坑
- PointCut:切入点,已经被增强的连接点。例如:addUser() —>被使用的坑
- advice:通知/增强,增强的代码、切面的工作被称为通知。例如after、before
- weaving:织入。把增强应用到目标对象target来创建新的代理对象的过程
- aspect:切面。切入点(PointCut)和通知(advice)的结合。一个切入点和一个通知,就能组成一个特殊的面。
主要的应用:事务管理、性能监控、安全检查、缓存、日志。
IOC:控制反转,控制权的转移。把权限转移给spring的ioc容器管理。(ioc容器用于与其他框架整和)
DI:对IOC这种思想的操作。容器通过反射给属性赋值。
简单的IOC原理
- 加载xml的配置文件,遍历其中的标签(使用dom4j)
- 获取标签中的 id 和 class 属性,加载 class 属性对应的类,并创建 bean
- 遍历标签中的标签,获取属性值,并将属性值填充到 bean 中
- 将 bean 注册到 bean 容器中
网友评论