✅ 一、什么是 IoC(控制反转)?
定义:
IoC 是一种对象创建和依赖关系由 容器控制 的思想,开发者不再手动 new 对象,而是把对象的创建和管理交给 Spring 容器。
通俗理解:
以前我们主动去找依赖对象(比如 new UserServiceImpl()),现在 Spring 帮我们准备好放进来(通过注入)。
核心机制:
-
BeanFactory / ApplicationContext 读取配置(注解或 XML)
-
实例化对象并维护依赖关系
-
注入方式:构造器注入 / Setter 注入 / @Autowired 注解注入
常见场景:
@Service
public class OrderService {
@Autowired
private UserService userService; // Spring自动注入
}
✅ 二、什么是 AOP(面向切面编程)?
定义:
AOP 是一种编程思想,它将通用逻辑(如日志、事务、权限)从业务逻辑中剥离出来,形成“切面”,按需动态织入目标方法执行前后。
通俗理解:
不改业务代码,就能给方法加上“功能外挂”。比如,方法执行前打印日志、执行后提交事务。
核心术语:
-
切点(Pointcut):拦截哪些方法?(如所有 @Service 中的 public 方法)
-
通知(Advice):在什么时候做什么?(如方法前、后、异常时)
-
切面(Aspect):通知 + 切点的组合
-
织入(Weaving):将切面逻辑加入目标对象过程,Spring 用的是 JDK 动态代理或 CGLIB
常见场景:
@Aspect
@Component
public class LogAspect {
@Before(\"execution(* com.example.service..*(..))\") // 切点表达式
public void logBefore(JoinPoint joinPoint) {
System.out.println(\"方法执行前记录日志\");
}
}
✅ 总结一句话:
IoC 管对象的创建与依赖注入,AOP 管通用功能的横切抽取与动态织入,它们共同帮助 Spring 实现高内聚、低耦合的架构风格。

1059

被折叠的 条评论
为什么被折叠?



