ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码

spring boot 源码解析-SpringApplication初始化(1/5)

来源:网络整理     时间:2018-05-15     关键词:

本篇文章主要介绍了" spring boot 源码解析-SpringApplication初始化",主要涉及到方面的内容,对于Javajrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下: 前?我们?成?个spring boot 项?时,会?带?个启动类. 代码如下:@SpringBootApplicationpublic class Spring...

前?

我们?成?个spring boot 项?时,会?带?个启动类. 代码如下:

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

 就是这么简单的代码,构成了spring boot的世界. 那么代码中只有?个@SpringBootApplication 注解 和 调?了SpringApplication#run

?法.那么我们先来解析SpringApplication的run?法.

解析

  1. ?先调?了org.springframework.boot.SpringApplication#run(Object, String...) ?法.代码如下:

  2. public static ConfigurableApplicationContext run(Object source, String... args) {
     return run(new Object[] { source }, args);
    }
  3. 接着调?如下代码:
  4. public static ConfigurableApplicationContext run(Object[] sources, String[] args) {
     return new SpringApplication(sources).run(args);
    }
  5. 可以发现 ?先初始化了SpringApplication,然后调?其实例?法:run.

    2. 在 SpringApplication 的构造器中,调?了 initialize ?法.

  6. public SpringApplication(Object... sources) {
     initialize(sources);
    }
  7. 3. SpringApplication#initialize?法代码如下:
  8. 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();
    }
  9. 可以看到做了如下5件事:

    1. 如果sources?度?于0的话,加?到SpringApplication的sources中,该sources是?个LinkedHashSet.

    2. 调?deduceWebEnvironment?法判断是否是web环境

    3. 设置initializers.

    4. 设置Listeners.

    5. 设置mainApplicationClass.

    4. deduceWebEnvironment代码如下:

相关图片

相关文章