【Spring 第一课】


前言


一、什么是BeanFactory?

IOC解决的是类与类的耦合问题,依赖DI(自动注入)来实现。这里用来生产Bean,最重要的就是BeanFactory。它是Spring的顶层核心接口,使用的是简单工厂模式。负责生产Bean。

简单工厂模式

定义一个工厂类,他可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类

二、BeanFactory和ApplicationContext的区别

BeanFactory比较早期的工厂,无法支持aop等插件;创建对象的时候,延迟加载,只有调用getBean方法才会实例化。
没有特殊要求都要使用ApplicationContext,因为BeanFactory能实现的,它都能实现。

三、简述SpringIOC的加载过程(穿插了Bean的生命周期)

类加载成一个bean定义,通过BeanFactory.getBean(), 生产/读取。

Bean 定义

BeanDefinitionReader读取配置类; 
BeanDefinitionScanner扫描xml、@bean;
BeanDefinitionRegistry注册成BeanDefinition,放到BeanDefinitionMap中;
BeanFactoryPostProcessor可以修改bean定义,BeanDefinitionRegistryPostProcessor可以注册bean定义;

Bean实例化

实例化(反射)
填充属性(@Autowired、@Value)
初始化(initMethid/destroy。有调用很多Aware,设置name、applicaitoncontent 等)
放到Map<beanName, bean实例>中,也就是一级缓存。(DefaultSingletonBeanRegistry)
附:aop是在初始化完成后,BeanPostProcessor中实现的。整个bean实例化过程中,有9次调用BeanPostProcessor的场景

总结

附录图
SpringIOC实例化Bean流程图
类加载描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值