AOP:对业务逻辑的各部分进行隔离,减小各部分间的耦合,提高代码的重用性。
实质:就是在不修改源码的前提下,增加其他功能:如权限校验、日志记录等。
其实主要就是通过代理机制,完成对功能的添加。两种代理机制:
JDK的动态代理:必须要实现了接口的类(一般实现了接口的类优先)
Cglib的动态代理:针对没有实现接口的类,应用的是底层字节码增强的技术,生成当前类的子对象
场景一: 记录日志
场景二: 监控方法运行时间 (监控性能)
场景三: 权限控制
场景四: 缓存优化 (第一次调用查询数据库,将查询结果放入内存对象, 第二次调用, 直接从内存对象返回,不需要查询数据库 )
场景五: 事务管理 (调用方法前开启事务, 调用方法后提交关闭事务 )