# IOC 创建对象的过程从原来的new变为由Spring控制对象创建,并将创建好的对象统一交给容器管理。配合依赖注入实现了对象的创建与使用解耦(开发者只关心使用) # 上下文 提供了操作容器的统一API入口,可以通过调用直接创建Bean、或者读取配置等 # AOP 利用代理机制实现横向抽象,例如@transactional和@Async 注解都是通过注解拦截器读取到被注解类,然后生成代理对象,例如事务注解,自动加入开启事务、提交事务、回滚事务。 # 为什么使用三级缓存 因为初始化bean并赋属性以及依赖关系注入不是同步的过程,而是异步完成,例如有些bean已经注入到其他bean,但是此时它的属性并没有完全赋值,导致早期bean和最终bean不一致,也是个一致性问题。所以需要使用三级缓存解决。 # Bean的生命周期 1. bean元数据配置读取、解析 2. 注册到容器 3. bean class加载 4. 属性赋值 5. 初始化创建 6. 使用 7. 销毁