23 02 2025

2025.02.23笔记

Spring IOC 的理解 实现?

控制反转:原来的对象是由使用者来进行控制的,有了spring之后,可以把整个对象交给spring来帮我们进行管理。

DI:依赖注入,把对应的属性的值 注入到具体的对象中,@Autowired完成属值性的注入。

容器:存储对象,使用map结构来存储对象,在spring中存在三级缓存,singletonObjects存放的是完整的bean对象。整个Bean的生命周期,从创建到使用到销毁的过程全部都是由容器来管理。


容器的创建过程

BeanFactory    DefaultListableBeanFactory    向bean工厂中设置一些参数 BeanPostProcessor Aware接口的子类 等等属性

加载解析bean对象    准备要创建的bean对象的定义对象 beanDefinition (xml或者注解的解析过程)

beanFactoryPostProcessor的处理,此处是扩展点,PlaceHolderConfigurerSupport、ConfigurationClassPostProcessor

BeanPostProcessor的注册功能,方便后续对bean对象完成具体的扩展功能

通过反射的方式将BeanDefinition对象实例化成具体的bean对象

bean对象的初始化过程 (填充属性 调用aware子类的方法 调用BeanPostProcessor的前置处理方法 调用init-method方法 调用 BeanPostProcessor的后置处理方法)

生成完整的bean对象,通过getBean方法可以直接获取

销毁过程


spring ioc 底层 反射 工厂 设计模式

关键的几个方法 createBeanFactory     getBean    doGetBean    createBean    doCreateBean ... ...

  1. 先通过createBeanFactory创建出一个Bean工厂 DefaultListableBeanFactory
  2. 开始循环创建对象,因为容器中的bean默认是单例的,所以优先通过getBean,doGetBean从容器中查找
  3. 找不到的话 通过createBean doCreateBean方法,以反射的方式创建对象 一般情况下使用的是无参的构造方法 getDeclaredConstructor newInstance
  4. 进行对象的属性填充 populateBean
  5. 进行其他的初始化操作 initializingBean






延伸阅读
  1. 浪海博客系统友情链接说明
  2. 浪海导航关于本站
  3. 浪海同志的一生
  4. 浪海博客系统部署说明
  5. minio 相关说明
  6. 浪海皇室 QQ飞车手游
  7. rabbitMQ 相关说明
  8. mysql相关说明
  9. ribbon负载均衡
  10. 开源支持浪海博客系统
如果出现代码等内容显示不正常,使用以前的显示器:以前的显示器
发表评论