35 lines
1.0 KiB
Markdown
35 lines
1.0 KiB
Markdown
|
|
# IoC & AOP
|
||
|
|
|
||
|
|
**IoC**
|
||
|
|
|
||
|
|
> IoC(Inversion of Control, 控制反转)。是一种思想,核心在于将控制对象的权利从程序员手上移交给容器。能够降低对象之间的耦合度,能够使得资源容易管理。
|
||
|
|
|
||
|
|
*DI(Dependency Injection)* 是`Spring`实现`IoC`的主要方式
|
||
|
|
|
||
|
|
|
||
|
|
**AOP**
|
||
|
|
|
||
|
|
> AOP(Aspect Oriented Programming, 面向切面编程)。核心在于将横切关注点从核心业务逻辑中分离出来,形成一个个的切面。
|
||
|
|
|
||
|
|
- 术语
|
||
|
|
- 横切关注点
|
||
|
|
- 公共行为:日志记录、事务管理、权限控制、接口限流
|
||
|
|
- 切面
|
||
|
|
- 类:对横切关注点进行封装的类
|
||
|
|
- 连接点
|
||
|
|
- 方法调用或者方法执行的某个时刻
|
||
|
|
- 通知
|
||
|
|
- 需要执行的操作
|
||
|
|
- `Before`
|
||
|
|
- `After`
|
||
|
|
- `AfterReturning`
|
||
|
|
- `AfterThrowing`
|
||
|
|
- `Around`
|
||
|
|
- 切点
|
||
|
|
- 表达式:用于匹配连接点
|
||
|
|
- `execution(* com.example.service..*(..))`
|
||
|
|
- 织入
|
||
|
|
- 将切面与目标对象连接起来
|
||
|
|
- 时机
|
||
|
|
- 编译期
|
||
|
|
- 运行期
|