ApplicationContext applicationContext =new ClassPathXmlApplicationContext("spring-context.xml");
ClassPathXmlApplicationContext用于加载classpath下的配置文件
applicationContext.getBean(XXX.class);这里已经进行获取bean ,因此bean的实例化是在new的构造方法中进行的,这里就是ioc的入口
// Prepare this context for refreshing.
// 1. 准备刷新Spring上下文,主要用来记录Spring上下文加载开始时间,设置一些基础成员变量value
prepareRefresh();

// Tell the subclass to refresh the internal bean factory.
//2. 刷新BeanFactory,此方法内完成配置文件中配置的Bean到BeanDefinition的转化及注册,重要
ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory();

// Prepare the bean factory for use in this context.
//3. 准备Bean工厂,主要用来配置BeanFactory的基础信息,例如上下文的ClassLoader和后处理器
prepareBeanFactory(beanFactory);

try {
// Allows post-processing of the bean factory in context subclasses.
//4. 允许子context添加一些BeanFactoryPostProcessor,比如Web应用中AbstractRefreshableWebApplicationContext添加ServletContextAwareProcessor
postProcessBeanFactory(beanFactory);

// Invoke factory processors registered as beans in the context.
// 5. 执行BeanFactoryPostProcessor中定义的方法
invokeBeanFactoryPostProcessors(beanFactory);

// Register bean processors that intercept bean creation.
// 6. 注册所有的BeanPostProcessor,这部分BeanPostProcessor会在下面finishBeanFactoryInitialization方法
// 过程中使用
registerBeanPostProcessors(beanFactory);

// Initialize message source for this context.
// 7. 初始化MessageSource,MessageSource是Spring定义的用于实现访问国际化的接口
initMessageSource();

// Initialize event multicaster for this context.
// 8. 初始化上下文事件广播器
initApplicationEventMulticaster();

// Initialize other special beans in specific context subclasses.
// 9. 模板方法,可以通过重写它添加特殊上下文刷新的工作
onRefresh();

// Check for listener beans and register them.
// 10. 注册监听器
registerListeners();

// Instantiate all remaining (non-lazy-init) singletons.
// 11. 实例化所有定义的单例Bean 重要
finishBeanFactoryInitialization(beanFactory);

// Last step: publish corresponding event.
// 结束Spring上下文刷新
finishRefresh();
}

最新文章

  1. Java学习笔记(03)
  2. 【Spring-web】RestTemplate源码学习
  3. jmx相关资料
  4. python3 如何使用ip、爬虫
  5. iscsi: 多路径
  6. js的各种继承
  7. 你需要知道的三个 CSS3技巧(转)
  8. Python之print语句
  9. python下yield(生成器)
  10. sha1加密java代码
  11. 洛谷:P1036:选数
  12. (原创)超详细一步一步在eclipse中配置Struts2环境,无基础也能看懂
  13. IntelliJ IDEA 和 Pycharm 破解
  14. python爬虫知识脉络
  15. 从零开始学安全(二十一)●PHPSPL异常
  16. bat搜集
  17. 11G新特性 -- Expression Statistics
  18. laravel App\Kernel.php中的middleware、middlewareGroups、routeMiddleware
  19. git 找回本地误删的文件
  20. Centos7调整swap分区

热门文章

  1. 数据库基础01-SQL基础语法
  2. P3295 萌萌哒 题解
  3. HDFS读写流程(重点)
  4. Linux 下载工具推荐: Motrix && qbittorrent
  5. python-----内存管理机制
  6. JavaScript学习 Ⅱ
  7. MCU 51-3定时器
  8. 数据可视化之powerBI基础(三)编辑交互,体验更灵活的PowerBI可视化
  9. 机器学习实战基础(二十九):决策树(二)DecisionTreeClassifier与红酒数据集
  10. bzoj2132圈地计划