Spring Study

Spring

BeanFactory & ApplicationContext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1. BeanFactory
//1.创建Bean工厂
DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();

//2.创建读取器
XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(beanFactory);

//3.加载配置文件
reader.loadBeanDefinitions("beans.xml");

//4.获取Bean实例对象
System.out.println(beanFactory.getBean("userService"));

2. ApplicationContext
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
applicationContext.getBean("userService");

alt text

区别总结:

  • ApplicationContext 高级,封装了很多功能;BeanFactory更底层

  • Bean初始化时机不同

    • BeanFactory 是第一次调用getBean()时才进行Bean的创建
    • ApplicationContext 是配置文件一加载,就将Bean实例化好了

基于xml的 spring 的 Bean配置

  1. Bean的xml配置名字

alt text

如果id和name都没有,默认名字是全类名

  1. Bean的范围配置

默认Bean是单例的,加载了xml之后就会创建,之后会存在单例池中(但可以配置延迟加载 lazy-init = 'true'

  • applicationContext
    • beanFactory
      • singletonObjects

Bean中所需要填充的属性,存储在BeanDefinition中

alt text

  1. Bean实例化配置

分为 构造函数构造Bean工厂
默认是无参构造,并且大部分情况都是不写构造函数,会调用类的默认无参构造函数,不用显式声明

  1. Bean的依赖注入

分为 set构造、构造函数、注解
alt text

  1. Bean的实例化流程
    alt text
    alt text

通过Bean的后处理器 允许我们介入到Bean的整个实例化流程中去。
后处理器,是在beanDefinition之后,singletonObjects之前

Bean生命周期

alt text

IOC容器实例化Bean的整体流程图
alt text


Spring Study
https://cs-lb.github.io/2024/12/19/java实习学习/Spring-Study/
作者
Liu Bo
发布于
2024年12月19日
许可协议