什么是AOP面向切面编程?
-
假话:方便开发者,提高开发效率,为了广大程序员谋福利
-
真话:就是“懒” -> 懒人智慧才是厉害的
Aspect Oriented Program面向切面编程
在不改变原有逻辑上增加额外的功能,比如解决系统层面的问题,或者增加新的功能
举例:拦截器就是最好的AOP思想,比如用户下单,我们要校验用户是否是合法用户,是不是登陆了,这些权限校验并不是在service层去做的,而是在拦截器去做的,最前置的地方。
场景
- 权限控制
- 缓存
- 日志处理 基本增删改做日志记录,防止后台数据丢失
- 事务控制
AOP思想把功能分两个部分,分离系统中的各种关注点
- 核心关注点
- 业务的主要功能
- 横切关注点
- 非核心、额外增加的功能,并可复用
好处
- 减少代码侵入,解耦
- 可以统一处理横切逻辑
- 方便添加和删除横切逻辑
AOP核心概念
横切、通知、连接点、切入点、切面??
一句话来说,就是进入到某些核心业务之前做一些其它操作,这个操作是可复用的