IOC - 依赖注入(DI)

spring将bean进行容器化统一管理,需要时由spring创建或直接注入单例,本质上IOC就是个ConcurrentHashMap

AOP

面向切面编程
事务处理、日志管理、权限控制

spring如何解决循环依赖

①:createBeanInstance:实例化,其实也就是 调用对象的构造方法实例化对象
②:populateBean:填充属性,这一步主要是多bean的依赖属性进行填充
③:initializeBean:调用spring xml中的init() 方法。
使用三层缓存架构

  • singletonObjects:一级缓存 存储的是所有创建好了的单例Bean
  • earlySingletonObjects:完成实例化,但是还未进行属性注入及初始化的对象
  • singletonFactories:提前暴露的一个单例工厂,二级缓存中存储的就是从这个工厂中获取到的对象