本文以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不同类型入口的最终入口