3、Spring IoC容器概述.md 2.7 KB

在这里插入图片描述

第三章:Spring IoC 容器概述

Spring IoC 依赖查找:

  • 根据 Bean 名称查找
    • 实时查找
    • 延迟查找
  • 根据 Bean 类型查找
    • 单个 Bean 对象
    • 集合 Bean 对象
  • 根据 Bean 名称 + 类型查找
  • 根据 Java 注解查找
    • 单个 Bean 对象
    • 集合 Bean 对象

Spring IoC 依赖注入:

  • 根据 Bean 名称注入
  • 根据 Bean 类型注入
    • 单个 Bean 对象
    • 集合 Bean 对象
  • 注入容器內建 Bean 对象 -- 例如Environment内建bean,在初始化容器的时候就被自动注入了
  • 注入非 Bean 对象 -- 例如beanfactory,不能进行依赖查找。会报错error
  • 注入类型
    • 实时注入
    • 延迟注入

spring ioc 依赖来源:

  • 自定义bean
  • 容器内建bean对象
  • 容器内建依赖

spring ioc 配置元信息:

  • bean定义配置
    • 基于xml文件
    • 基于properties文件
    • 基于java注解
    • 基于java api
  • ioc容器配置
    • 基于xml文件
    • 基于java注解
    • 基于java api
  • 外部化属性配置
    • 基于java注解 例如@value注解

延迟查找和延迟注入,使用到接口 org.springframework.beans.factory.ObjectProviderorg.springframework.beans.factory.ObjectFactoryObjectProvider 继承 ObjectFactory

BeanFactoryApplicationContext 谁才是 Spring IoC 容器?

  • BeanFactory 是 Spring 底层 IoC 容器
  • ApplicationContext 是具备应用特性的 BeanFactory 超集
  • BeanFactory 是基本的 IoC 容器,ApplicationContext 实现 BeanFactory 接口,并在内部使用 ConfigurableListableBeanFactory 实现接口方法。

ApplicationContext 除了 IoC 容器角色,还有提供:

  • 面向切面(AOP)
  • 配置元信息(Configuration Metadata)
  • 资源管理(Resources)
  • 事件(Events)
  • 国际化(i18n)
  • 注解(Annotations)
  • Environment 抽象(Environment Abstraction)

ioc容器的简单启动流程

  1. 创建beanfactory
  2. 注册内建bean依赖和内建非bean依赖
  3. beanfactory扩展,可以扩展或者添加自定义的bean
  4. 对bean的修改或者扩展
  5. 国际化准备
  6. 应用事件的广播
  7. 事件监听器
  8. 注册应用上下文
  9. 结束启动

ioc容器停止

  1. 关闭bean
  2. 销毁bean工厂
  3. 子类进行下一步操作

面试题

1、什么是ioc容器

image-20220914223626948

2、beanfactory和factorybean的区别?

image-20220914224020512

3、springioc容器启动时做了哪些准备?

image-20220914224446817