通过源码了解springboot加载application.properties过程

  • Post author:
  • Post category:其他


springboot有一个配置文件application.properties,我只知道有这么一个配置文件,但是springboot启动的时候,是在哪里加载该文件的,又如何找到该文件的?从源码去查看

在main方法里执行该方法SpringApplication.run(Test.class, args);查看SpringApplication类的源码,进入run方法

public static ConfigurableApplicationContext run(Object source, String… args) {


return run(new Object[] { source }, args);

}

再进入 run(new Object[] { source }, args);方法

public static ConfigurableApplicationContext run(Object[] sources, String[] args) {


return new SpringApplication(sources).run(args);

}

到这一步,可以看到创建一个新的SpringApplication,new SpringApplication(sources),并执行run()方法,先到构造方法去看一下,这类做了什么初始化的事

public SpringApplication(Object… sources) {


initialize(sources);

}

里面有一个initialize(sources);方法,再进去

@SuppressWarnings({ “unchecked”, “rawtypes” })

private void initialize(Object[] sources) {


if (sources != null && sources.length > 0) {


this.sources.addAll(Arrays.asList(sources));

}

this.webEnvironment = deduceWebEnvironment();

setInitializers((Collection) getSpringFactoriesInstances(

ApplicationContextInitializer.class));

setListeners((Collection) getSpringFactoriesInstances(ApplicationListener.class));

this.mainApplicationClass = deduceMainApplicationClass();

}

在上面的代码中, this.webEnvironment = deduceWebEnvironment();该方法主要是筛选sevlet和ConfigurableWebApplicationContext,如何有这两个就返回false,否则返回true,具体有什么作用,我也不知道,但跟这次讨论的问题无关,暂时放一边,setInitalizers()方法,看一下源码

public



版权声明:本文为qq_36009027原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。