Spring源码浅析

启动Spring容器,加载xml配置文件

调用构造器

调用本类构造器,设置配置文件路径,然后执行refresh方法。

refresh方法。


进来先执行prepareRefresh准备方法,其中设置启动时间,其他设置等等,执行完会打印:

refresh中继续执行:

这里面会加载指定的xml配置文件,创建对象工厂。
refresh中继续执行:

prepareBeanFactory中对象工厂的一些设置。
继续执行:
支持国际化功能的:

初始化所有单实例bean:

其中:

再其中:拿到所有bean的名字

然后,按顺序创建所有非懒加载的,单例的,非抽象的bean。



所有的getBean方法都是调用doGetBean方法:

在doGetBean方法里:
先检查是否有这个bean,第一次创建没有的。
有就去拿


所有单例bean放在这里:

没有就创建:


getSingleton方法:
先去拿:

拿不到就创建:

如果是新建的就添加到容器中:

返回这个单例bean:


ioc就是一个容器,单实例bean保存在一个map中;
DefaultSingletonBeanRegistry-singletonObjects;



Spring里面最大的模式就是 工厂模式
          <bean class=""></bean>
          BeanFactory:bean工厂;工厂模式;帮用户创建bean


BeanFactory:bean工厂接口;负责创建bean实例;容器里面保存的所有单例bean其实是一个map;是Spring最底层的接口;

ApplicationContext:是容器接口;更多的负责容器功能的实现;(可以基于beanFactory创建好的对象之上完成强大的容器),可以从map获取这个bean。

自定义类继承ApplicationContextAware或BeanFactoryAware接口可以获得ApplicationContext或BeanFactory。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值