# 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..*(..))` - 织入 - 将切面与目标对象连接起来 - 时机 - 编译期 - 运行期