玩命加载中🤣🤣🤣

SpringBoot一些基础知识点


Spring及Boot几道面试题

IOC的理解,原理与实现

总:

  • 控制反转
    • 理论:原来的对象是由使用者来进行控制,有了 Spring 之后,可以把整个对象交给 Spring 来帮助管理
    • DI:依赖注入,把对象的属性值注入到具体的对象中。@Autowired,populateBean完成属性值的注入
  • 容器
    • 存储对象,使用 map 结构来存储,在 Spring 中一般在三级缓存,singletonObject 存放完整的 bean 对象,
    • 整个 bean 的生命周期,从创建到使用到销毁的过程全部都是由容器来管理(bean 的生命周期)

分:

  1. 容器的创建过程(beanFactory,DefaultListableBeanFactory),向 bean 工厂中设置一些参数(BeanPostProcessor,Aware 接口的子类)等等属性
  2. 加载解析 bean 对象,准备要创建的 bean 对象的定义对象 beanDefinition(xml 或者注解的解析过程)
  3. beaFactoryPostProcessor 的处理,此处是拓展点,PlaceHolderConfigurSupport,ConsifurationClassPostProcessor
  4. BeanPostProcessor 的注册功能,方便后续对 bean 对象完成具体的拓展功能
  5. 通过反射方式将 BeanDefinition 对象实例化成具体的 bean 对象
  6. bean对象的初始化过程(填充属性,调用 aware 子类的方法,调用 BeanPostProcessor 前置方法,调用 init-method 方法,调用 BeanPostProcessor 的后置处理方法)
  7. 生成完整的 bean 对象,通过 getBean() 方法可以直接获取
  8. 销毁过程
flowchart LR

subgraph bean的定义信息
xml
注解
end
subgraph bf[BeanFactory]
direction LR
b1[BeanDefinition \n bean的定义信息]
-.反射.-> b2[创建bean对象]
--> b3[使用bean对象] --> b4[销毁bean对象]
end
bean的定义信息 --接口 规范约束--> bf

subgraph 图二
direction LR
PostProcessor -.-> 后置处理器增强器 
-.-> 提供某些额外的拓展功能
--> BeanFactoryPostProcessor
end
  • BeanFactory:容器的入口,ApplicationContext实现了BeanFactory

附: 反射方式

//1.获取Class对象
Class clazz = Class.forName("包名+类名");
Class clazz = 对象.getClass();
Class clazz = 类名.class;

//2.获取构造器
Constructor constructor = clazz.getDeclaredConstructor();

//3.创建对象
Object obj = constructor.newInstance();

文章作者: 👑Dee👑
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 👑Dee👑 !
  目录