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日
许可协议