spring AOP详解-源码

refresh()

关键的方法为:finishBeanFactoryInitialization(beanFactory);

  • 创建所有非懒加载的单例 Bean,确保它们在上下文刷新后可用
  • 在此方法下面关键的方法为:beanFactory.preInstantiateSingletons();
    • 实例化所有剩余的(非懒加载)单例 Bean
      • 在此方法下面关键的方法便是(代码行为下述代码的214行):getBean(beanName)
        • 直接获取非工厂 Bean 的实例
          • getBean(beanName)方法中,下一步是调用doGetBean()这个方法,该方法下面有一个createBean的方法,截图如下,之后进入创建 Bean 的逻辑
            在这里插入图片描述
public void refresh() throws BeansException, IllegalStateException {
   
    // 同步控制,确保在刷新上下文时的线程安全
    synchronized (this.startupShutdownMonitor) {
   
        // 记录上下文刷新过程的启动时间
        StartupStep contextRefresh = this.applicationStartup.start("spring.context.refresh");

        // 准备上下文进行刷新
        prepareRefresh();

        // 获取一个新的、干净的 BeanFactory 实例
        ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory();

        // 对 BeanFactory 进行配置和初始化
        prepareBeanFactory(beanFactory);

        try {
   
            // 允许子类对 BeanFactory 进行后处理,通常用于添加自定义的 BeanPostProcessor
            postProcessBeanFactory(beanFactory);

            // 记录 BeanFactory 后处理的启动时间
            St
上一篇:uniapp 中间tabbar的实现


下一篇:夹逼准则求数列极限(复习总结)