SpringBoot启动解析

还是使用SpringBoot源码构建吧,好直接加中文注释,哈哈哈
1、启动类

@SpringBootApplication
public class ShiroDemoApplication {

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

}

2、SpringApplication.run();静态方法

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

2.1 new SpringApplication(primarySources);

public SpringApplication(ResourceLoader resourceLoader, Class<?>... primarySources) {
	this.resourceLoader = resourceLoader;//null
	Assert.notNull(primarySources, "PrimarySources must not be null");//项目启动类
	this.primarySources = new LinkedHashSet<>(Arrays.asList(primarySources));
	this.webApplicationType = WebApplicationType.deduceFromClasspath();
	setInitializers((Collection) getSpringFactoriesInstances(ApplicationContextInitializer.class));
	setListeners((Collection) getSpringFactoriesInstances(ApplicationListener.class));
	this.mainApplicationClass = deduceMainApplicationClass();
}

2.2 (new SpringApplication(primarySources)).run(args);

原文地址:https://www.cnblogs.com/speily/p/14792919.html