2.1spring源码学习-spring容器初始化过程之SpringBoot

69 阅读1分钟

本文以springboot启动为切入点,介绍spring启动第一步

1.从springboot的启动开始,如下代码

public class UserApplication {
    public static void main(String[] args) {
        SpringApplication.run(UserApplication.class, args);
    }
}

2.点击进入到SpringApplication.run方法,以下代码是SpringApplication类内的,省略了无关代码

public static ConfigurableApplicationContext run(Class<?> primarySource, String... args) {
   return run(new Class<?>[] { primarySource }, args);
}

public static ConfigurableApplicationContext run(Class<?>[] primarySources, String[] args) {
   return new SpringApplication(primarySources).run(args);
}
public ConfigurableApplicationContext run(String... args) {
  ......
  refreshContext(context);
  ......
   return context;
}
private void refreshContext(ConfigurableApplicationContext context) {
   ......
   refresh((ApplicationContext) context);
}
@Deprecated
protected void refresh(ApplicationContext applicationContext) {
   ......
   refresh((ConfigurableApplicationContext) applicationContext);
}
protected void refresh(ConfigurableApplicationContext applicationContext) {
   applicationContext.refresh();
}

3.进入到 applicationContext.refresh()接口方法,点击查询实现方法,进入AbstractApplicationContext.refresh()方法,这个抽象类的方法就是spring不同类型入口的最终入口