上QQ阅读APP看书,第一时间看更新
3.1 SpringApplication的初始化简介
在入口类中主要通过SpringApplication的静态方法——run方法进行SpringApplication类的实例化操作,然后再针对实例化对象调用另外一个run方法来完成整个项目的初始化和启动。本章重点围绕此过程的前半部部分(即SpringApplication类的实例化)来讲解。
public class SpringApplication { ... public static ConfigurableApplicationContext run(Class<?> primarySource, String... args) { return run(new Class<?>[] { primarySource }, args); } public static ConfigurableApplicationContext run(Class<?>[] primarySources, String[] args) { // 创建SpringApplication对象并执行其run方法 return new SpringApplication(primarySources).run(args); } ... }
通过入口类的方法进入,可以看到SpringApplication的实例化只是在它提供的静态run方法中新建了一个SpringApplication对象。其中参数primarySources为加载的主要资源类,通常就是Spring Boot的入口类,args为传递给应用程序的参数信息。
借鉴SpringApplication内部run方法的实现,我们也可以直接新建一个SpringApplication对象,并调用其run方法。因此,启动程序也可以如此来写:
@SpringBootApplication public class SpringLearnApplication { public static void main(String[] args) { new SpringApplication(SpringLearnApplication.class).run(args); } }
这样写程序的一个好处便是,可以通过SpringApplication提供的一些方法(setXX或addXX方法)来进行指定功能的定制化设置。
下面将重点围绕SpringApplication类的实例化展开。