国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java面試--SpringBoot啟動(dòng)流程

這篇具有很好參考價(jià)值的文章主要介紹了Java面試--SpringBoot啟動(dòng)流程。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、SpringBoot是什么

SpringBoot 是依賴于 Spring 的,比起 Spring,除了擁有 Spring 的全部功能以外,SpringBoot 無需繁瑣的 Xml 配置,這取決于它自身強(qiáng)大的自動(dòng)裝配功能;并且自身已嵌入Tomcat、Jetty 等 web 容器,集成了 SpringMvc,使得 SpringBoot 可以直接運(yùn)行,不需要額外的容器,提供了一些大型項(xiàng)目中常見的非功能性特性,如嵌入式服務(wù)器、安全、指標(biāo),健康檢測(cè)、外部配置等,

其實(shí) Spring 大家都知道,Boot 是啟動(dòng)的意思。所以,Spring Boot 其實(shí)就是一個(gè)啟動(dòng) Spring 項(xiàng)目的一個(gè)工具而已,總而言之,SpringBoot 是一個(gè)服務(wù)于框架的框架;也可以說 SpringBoot 是一個(gè)工具,這個(gè)工具簡化了 Spring 的配置;

二、Spring Boot的核心功能

  1. 可獨(dú)立運(yùn)行的 Spring 項(xiàng)目:Spring Boot 可以以 Jar 包的形式獨(dú)立運(yùn)行
  2. 內(nèi)嵌的 Servlet 容器:Spring Boot 可以選擇內(nèi)嵌 Tomcat、Jetty 或者 Undertow,無須以 war 包形式部署項(xiàng)目
  3. 簡化的 Maven 配置:Spring 提供推薦的基礎(chǔ) POM 文件來簡化 Maven 配置
  4. 自動(dòng)配置 Spring:Spring Boot會(huì)根據(jù)項(xiàng)目依賴來自動(dòng)配置 Spring 框架,極大地減少項(xiàng)目要使用的配置
  5. 提供生產(chǎn)就緒型功能:提供可以直接在生產(chǎn)環(huán)境中使用的功能,如性能指標(biāo)、應(yīng)用信息和應(yīng)用健康檢查
  6. 無代碼生成和 Xml 配置:Spring Boot 不生成代碼。完全不需要任何 Xml 配置即可實(shí)現(xiàn) Spring 的所有配置

三、SpringBoot啟動(dòng)流程

SpringBoot的啟動(dòng)經(jīng)過了一些一系列的處理,我們先看看整體過程的流程圖

Java面試--SpringBoot啟動(dòng)流程

3.1、運(yùn)行 SpringApplication.run() 方法

可以肯定的是,所有的標(biāo)準(zhǔn)的 SpringBoot 的應(yīng)用程序都是從 run 方法開始的

package com.spring;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
 
@SpringBootApplication
public class App  {
   
    public static void main(String[] args) {
   
        // 啟動(dòng)springboot
        ConfigurableApplicationContext run = SpringApplication.run(App.class, args);
    }
}

進(jìn)入 run 方法后,會(huì) new 一個(gè) SpringApplication 對(duì)象,創(chuàng)建這個(gè)對(duì)象的構(gòu)造函數(shù)做了一些準(zhǔn)備工作,編號(hào)第 2~5 步就是構(gòu)造函數(shù)里面所做的事情

/**
 * Static helper that can be used to run a {@link SpringApplication} from the
 * specified sources using default settings and user supplied arguments.
 * @param primarySources the primary sources to load
 * @param args the application arguments (usually passed from a Java main method)
 * @return the running {@link ApplicationContext}
 */
public static ConfigurableApplicationContext run(Class<?>[] primarySources,
		String[] args) {
   
	return new SpringApplication(primarySources).run(args);
}

3.2、確定應(yīng)用程序類型

在 SpringApplication 的構(gòu)造方法內(nèi),首先會(huì)通過 WebApplicationType.deduceFromClasspath(); 方法判斷當(dāng)前應(yīng)用程序的容器,默認(rèn)使用的是Servlet 容器,除了 Servlet 之外,還有 NONE 和 REACTIVE (響應(yīng)式編程);
Java面試--SpringBoot啟動(dòng)流程
具體代碼文章來源地址http://www.zghlxwxcb.cn/news/detail-428301.html

public SpringApplication(ResourceLoader resourceLoader, Class<?>... primarySources) {
   
   // resourceLoader 賦值為 Null
   this.resourceLoader = resourceLoader;
   
   // primarySources不為空,繼續(xù)向下執(zhí)行。為空拋異常
   Assert.notNull(primarySources, "PrimarySources must not be null");
   
   // 將 SpringbootdemoApplication(啟動(dòng)類)賦值給 primarySources 
   this.primarySources = new LinkedHashSet<>(Arrays.asList(primarySources));
   
   // 從 classpath 類路徑推斷 Web 應(yīng)用類型,有三種 Web 應(yīng)用類型,分別是
   // NONE: 該應(yīng)用程序不應(yīng)作為 Web 應(yīng)用程序運(yùn)行,也不應(yīng)啟動(dòng)嵌入式 Web 服務(wù)器
   // SERVLET: 該應(yīng)用程序應(yīng)作為基于 servlet 的 Web 應(yīng)用程序運(yùn)行,并應(yīng)啟動(dòng)嵌入式 servlet Web 服務(wù)器。
   // REACTIVE: 該應(yīng)用程序應(yīng)作為響應(yīng)式 Web 應(yīng)用程序運(yùn)行,并應(yīng)啟動(dòng)嵌入式響應(yīng)式 Web 服務(wù)器
   this.webApplicationType = WebApplicationType.deduceFromClasspath();
   
   // 初始化 bootstrapRegistryInitializers,通過 getSpringFactoriesInstances()獲取工廠實(shí)例,
   // 底層使用的是反射Class<?> instanceClass = ClassUtils.forName(name, classLoader)動(dòng)態(tài)加載實(shí)例對(duì)象。
   this

到了這里,關(guān)于Java面試--SpringBoot啟動(dòng)流程的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • SpringBoot啟動(dòng)流程

    SpringBoot啟動(dòng)流程

    SpringBoot的啟動(dòng)都需要如下的啟動(dòng)類 分析啟動(dòng)類, 可以看出核心是: 注解@SpringBootApplication 方法SpringApplication.run(SpringBootDemoApplication.class, args) 其中@SpringBootApplication之前已經(jīng)了解過,如果想要了解可以查看SpringBoot自動(dòng)裝配原理及分析 首先new了一個(gè)SpringApplication對(duì)象 然后調(diào)用Spr

    2024年01月25日
    瀏覽(14)
  • SpringBoot 啟動(dòng)流程

    概述 SpringBoot 是一個(gè)基于 Spring 的框架,它通過自動(dòng)配置和約定大于配置的方式,簡化了 Spring 應(yīng)用程序的開發(fā)和部署。在本文中,我們將會(huì)深入了解 Spring Boot 的啟動(dòng)流程,掌握 Spring Boot 應(yīng)用程序是如何啟動(dòng)并初始化的。 構(gòu)建環(huán)境 在了解 Spring Boot 的啟動(dòng)流程之前,需要先理

    2024年02月06日
    瀏覽(19)
  • SpringBoot啟動(dòng)流程簡要

    SpringBoot啟動(dòng)流程大概: 初始化SpringApplication 根據(jù)項(xiàng)目的配置情況和Conditional條件來推斷是否是一個(gè)Web應(yīng)用。 讀取所有jar包下面spring.factories文件,解析放入緩存,然后讀取 ApplicationListener 為key的監(jiān)聽器,后續(xù)在SpringBoot加載的過程中會(huì)基于事件發(fā)布來做很多擴(kuò)展通知。 真正的

    2024年02月15日
    瀏覽(15)
  • SpringBoot 的啟動(dòng)流程

    一、 生成SpringApplication對(duì)象 1. webApplicationType = 推測(cè)web應(yīng)用的類型(NODE(普通項(xiàng)目)、SERVLET(Servlet web項(xiàng)目)、 * REACTIVE(響應(yīng)式項(xiàng)目 flux) 2. 從spring.factories 中獲取BootstrapRegistryInitializer對(duì)象 3. initializers = 從spring.factories中獲取ApplicationContextInitializer對(duì)象 4. isteners = 從spring.factories中獲取

    2024年02月13日
    瀏覽(15)
  • SpringBoot的啟動(dòng)流程源碼分析

    SpringBoot的啟動(dòng)流程源碼分析

    new 一個(gè)IOC容器,傳入配置好的文件xml,在這個(gè)地方打bug 在這個(gè)debug的棧幀中,下面幾個(gè)不用看,直接看到getBean 內(nèi)容如圖所示,name傳的就是我們?cè)趚ml的bean標(biāo)簽的id,這里是instanceA 進(jìn)入到doGetBean后,因?yàn)槲沂菑腎OC初始化容器debug進(jìn)來的所以第一次通過。 Object sharedInstance = getSingl

    2024年01月24日
    瀏覽(18)
  • springboot啟動(dòng)流程 (2) 組件掃描

    SpringBoot的組件掃描是基于Spring @ComponentScan注解實(shí)現(xiàn)的,該注解使用basePackages和basePackageClasses配置掃描的包,如果未配置這兩個(gè)參數(shù),Spring將掃描該配置類所屬包下面的組件。 在服務(wù)啟動(dòng)時(shí),將使用ConfigurationClassPostProcessor掃描當(dāng)前所有的BeanDefinition,解析Configuration類,如果

    2024年02月09日
    瀏覽(20)
  • springboot啟動(dòng)流程 (3) 自動(dòng)裝配

    springboot啟動(dòng)流程 (3) 自動(dòng)裝配

    在SpringBoot中,EnableAutoConfiguration注解用于開啟自動(dòng)裝配功能。 本文將詳細(xì)分析該注解的工作流程。 啟用SpringBoot自動(dòng)裝配功能,嘗試猜測(cè)和配置可能需要的組件Bean。 自動(dòng)裝配類通常是根據(jù)類路徑和定義的Bean來應(yīng)用的。例如,如果類路徑上有tomcat-embedded.jar,那么可能需要一個(gè)

    2024年02月09日
    瀏覽(15)
  • SpringBoot內(nèi)嵌Tomcat啟動(dòng)流程

    SpringBoot內(nèi)嵌Tomcat啟動(dòng)流程

    Spring MVC 讓開發(fā)者不用了解 Servlet 細(xì)節(jié),專注于 Controller 編寫 API 接口。Spring Boot 更是采用約定大于配置的設(shè)計(jì)思想,通過內(nèi)嵌 Tomcat 的方式讓開發(fā)者可以快速構(gòu)建并部署一個(gè) Web 應(yīng)用。怎么做到的呢? 早期的開發(fā),一般是基于 Spring 和 Spring MVC 構(gòu)建我們的應(yīng)用,然后把項(xiàng)目打

    2024年02月02日
    瀏覽(78)
  • SpringBoot啟動(dòng)流程及自動(dòng)配置

    SpringBoot啟動(dòng)流程源碼: 1、啟動(dòng)SpringBoot啟動(dòng)類SpringbootdemoApplication中的main方法。 2、調(diào)用SpringApplication.run(SpringbootdemoApplication.class, args),該方法是一個(gè)靜態(tài)方法。 3、繼續(xù)調(diào)用SpringApplication內(nèi)部的run方法 ,且構(gòu)建了一個(gè)SpringApplication對(duì)象,應(yīng)用程序?qū)闹付ǖ闹饕獊碓醇虞dBea

    2024年02月14日
    瀏覽(15)
  • SpringBoot源碼學(xué)習(xí)4——SpringBoot內(nèi)嵌Tomcat啟動(dòng)流程源碼分析

    SpringBoot源碼學(xué)習(xí)4——SpringBoot內(nèi)嵌Tomcat啟動(dòng)流程源碼分析

    系列文章目錄和關(guān)于我 我在初學(xué)spring的時(shí)候,很懵逼,因?yàn)檎麄€(gè)項(xiàng)目中不存在main方法,讓我有點(diǎn)摸不著頭腦。那時(shí)候我知道有個(gè)東西叫tomcat是它監(jiān)聽了端口,解析了協(xié)議調(diào)到了我的servlet。 在我初學(xué)SpringBoot的時(shí)候,很懵逼,有main方法了,但是tomcat在哪里呢,又是如何啟動(dòng)起

    2024年02月04日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包