衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Springapplication調(diào)用的run方法的大致流程

冬至子 ? 來源:瑞煕share ? 作者:brevity wit ? 2023-06-02 10:11 ? 次閱讀

1. 對(duì)Spring Boot的理解

SpringBoot主要用來簡(jiǎn)化使用Spring的難度和繁重的XML配置,它是Spring組件的一站式解決方案,采取了習(xí)慣優(yōu)于配置的方法。通過.properties或者.yml文件替代了Spring繁雜的XML配置文件,同時(shí)支持@ImportResource注解加載XML配置。Spring Boot還提供了嵌入式HTTP服務(wù)器、命令行接口工具、多種插件等等,使得應(yīng)用程序的測(cè)試和開發(fā)簡(jiǎn)單起來。

  1. 可以快速構(gòu)建項(xiàng)目;
  2. 可以對(duì)主流開發(fā)框架的無配置集成;
  3. 項(xiàng)目可獨(dú)立運(yùn)行,無需外部依賴Servlet容器;
  4. 提供運(yùn)行時(shí)的應(yīng)用監(jiān)控;
  5. 可以極大地提高開發(fā)、部署效率;
  6. 可以與云計(jì)算天然集成。

2. Spring Boot Starter作用

Spring Boot通過提供眾多起步依賴(Starter)降低項(xiàng)目依賴的復(fù)雜度。起步依賴本質(zhì)上是一個(gè)Maven項(xiàng)目對(duì)象模型(Project Object Model, POM),定義了對(duì)其他庫(kù)的傳遞依賴,這些東西加在一起即支持某項(xiàng)功能。很多起步依賴的命名都暗示了它們提供的某種或某類功能。

舉例來說,你打算把這個(gè)閱讀列表應(yīng)用程序做成一個(gè)Web應(yīng)用程序。與其向項(xiàng)目的構(gòu)建文件里添加一堆單獨(dú)的庫(kù)依賴,還不如聲明這是一個(gè)Web應(yīng)用程序來得簡(jiǎn)單。你只要添加Spring Boot的Web起步依賴就好了。

3. Spring Boot的啟動(dòng)流程

首先,Spring Boot項(xiàng)目創(chuàng)建完成會(huì)默認(rèn)生成一個(gè)名為 *application 的入口類,我們是通過該類的main方法啟動(dòng)Spring Boot項(xiàng)目的。在main方法中,通過Springapplication的靜態(tài)方法,即run方法進(jìn)行Springapplication類的實(shí)例化操作,然后再針對(duì)實(shí)例化對(duì)象調(diào)用另外一個(gè)run方法來完成整個(gè)項(xiàng)目的初始化和啟動(dòng)。Springapplication調(diào)用的run方法的大致流程:

  1. 獲取SpringapplicationListener監(jiān)聽器;
  2. 啟動(dòng)所獲取到的所有監(jiān)聽器;
  3. 初始化ConfigurableEnvironment(配置文件);
  4. 打印Banner圖標(biāo);
  5. 創(chuàng)建容器ConfigurableapplicationContext;
  6. 準(zhǔn)備容器ConfigurableapplicationContext;
  7. 初始化容器ConfigurableapplicationContext;
  8. 監(jiān)聽器通知容器啟動(dòng)完成;
  9. 監(jiān)聽器通知容器正在運(yùn)行;

除了上述核心操作,run方法運(yùn)行過程中還涉及啟動(dòng)時(shí)長(zhǎng)統(tǒng)計(jì)、異常報(bào)告、啟動(dòng)日志、異常處理等輔助操作。

4. 描述Spring Boot自動(dòng)裝配的過程

@EnableAutoConfiguration注解、 @Configuration注解和 @ConditionalOnClass注解組成了Spring Boot自動(dòng)配置的核心,首先它得是一個(gè)配置文件,其次根據(jù)類路徑下是否有這個(gè)類去自動(dòng)配置。具體是通過maven讀取每個(gè)starter中的spring.factories文件,該文件配置了所有需要被創(chuàng)建在spring容器中的bean。

5. 對(duì)Spring Boot注解的了解

  1. @SpringBootapplication注解:

在Spring Boot入口類中,唯一的一個(gè)注解就是@SpringBootapplication。它是Spring Boot項(xiàng)目的核心注解,用于開啟自動(dòng)配置,準(zhǔn)確說是通過該注解內(nèi)組合的@EnableAutoConfiguration開啟了自動(dòng)配置。

  1. @EnableAutoConfiguration注解:

允許 Spring Boot 自動(dòng)配置注解,開啟這個(gè)注解之后,Spring Boot 就能根據(jù)當(dāng)前類路徑下的包或者類來配置 Spring Bean。

  1. @Conditional注解:

@Conditional注解是由Spring 4.0版本引入的新特性,可根據(jù)是否滿足指定的條件來決定是否進(jìn)行Bean的實(shí)例化及裝配。

圖片

6. Spring、SpringMVC和Springboot的區(qū)別

  1. Spring
    Spring最重要的特征是依賴注入。所有 SpringModules 不是依賴注入就是 IOC 控制反轉(zhuǎn)。
    當(dāng)我們恰當(dāng)?shù)氖褂?DI 或者是 IOC 的時(shí)候,我們可以開發(fā)松耦合應(yīng)用。松耦合應(yīng)用的單元測(cè) 試可以很容易的進(jìn)行。
  2. Spring MVC
    Spring MVC 提供了一種分離式的方法來開發(fā) Web 應(yīng)用。通過運(yùn)用像 DispatcherServelet, MoudlAndView 和 ViewResolver 等一些簡(jiǎn)單的概念,開發(fā) Web 應(yīng)用將會(huì)變的非常簡(jiǎn)單。
  3. SpringBoot
    Spring 和 SpringMVC 的問題在于需要配置大量的參數(shù)

7. 關(guān)于SpringBoot配置的一些問題

  1. Spring Boot 的核心配置文件有哪幾個(gè)?它們的區(qū)別是什么?

Spring Boot 的核心配置文件是 application 和 bootstrap 配置文件。

application 配置文件主要用于 Spring Boot 項(xiàng)目的自動(dòng)化配置。 bootstrap 配置文件有三個(gè)應(yīng)用場(chǎng)景。 使用Spring Cloud Config配置中心時(shí),需要在 bootstrap 配置文件中添加連接到配置中心的配置屬性,來加載外部配置中心的配置信息; 一些固定的不能被覆蓋的屬性; 一些加密或解密的場(chǎng)景。

2. Spring Boot 的配置文件有哪幾種格式?它們有什么區(qū)別?

主要有.properties 和 .yml格式,它們的區(qū)別主要是書寫格式不同。另外,.yml 格式不支持 @PropertySource 注解導(dǎo)入配置。

3. 如何理解 Spring Boot 配置加載順序

Spring Boot配置加載順序優(yōu)先級(jí)是:propertiese文件、YAML文件、系統(tǒng)環(huán)境變量、命令行參數(shù)。

4. 什么是YAML,有什么優(yōu)點(diǎn)。

YAML 是一種可讀的數(shù)據(jù)序列化語言,它通常用于配置文件。

優(yōu)點(diǎn):

配置有序

支持?jǐn)?shù)組,數(shù)組中的元素可以是基本數(shù)據(jù)類型或者對(duì)象

簡(jiǎn)潔方便

5. Spring Boot 是否可以使用 XML 配置 , Spring Boot 可以兼容老 Spring 項(xiàng)目嗎

Spring Boot 推薦使用 Java 配置同時(shí)支持 XML 配置,通過 @ImportResource 注解加載 XML 配置;

可以兼容,使用 @ImportResource 注解導(dǎo)入老 Spring 項(xiàng)目配置文件。

6. application.properties和bootstrap.properties有何區(qū)別

bootstrap比 applicaton 優(yōu)先加載,配置在應(yīng)用程序上下文的引導(dǎo)階段生效, 而且boostrap 里面的屬性不能被覆蓋; application用于 spring boot 項(xiàng)目的自動(dòng)化配置。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 控制器
    +關(guān)注

    關(guān)注

    112

    文章

    16448

    瀏覽量

    179472
  • 嵌入式系統(tǒng)
    +關(guān)注

    關(guān)注

    41

    文章

    3625

    瀏覽量

    129758
  • MVC
    MVC
    +關(guān)注

    關(guān)注

    0

    文章

    73

    瀏覽量

    13903
  • YAML
    +關(guān)注

    關(guān)注

    0

    文章

    21

    瀏覽量

    2343
  • XML加密
    +關(guān)注

    關(guān)注

    0

    文章

    3

    瀏覽量

    998
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    單片機(jī)是靠什么去讀取AD的數(shù)據(jù)?講一下大致流程

    單片機(jī)是靠什么去讀取AD的數(shù)據(jù)?講一下大致流程
    發(fā)表于 11-13 11:10

    分析 helloworld程序是如何被調(diào)用,SYS_RUN做什么事情

    [DEMO] Hello world. 但是 HelloWorld 函數(shù)是在何時(shí)被調(diào)用的呢?SYS_RUN 又是干嘛的呢?我們來看下。1. 啟動(dòng)流程首先,我們需要分析一下Hi3861的啟動(dòng)
    發(fā)表于 10-27 18:15

    【HarmonyOS】分析 helloworld程序是如何被調(diào)用,SYS_RUN做什么事情

    world. 但是 HelloWorld 函數(shù)是在何時(shí)被調(diào)用的呢?SYS_RUN 又是干嘛的呢?我們來看下。1. 啟動(dòng)流程首先,我們需要分析一下Hi3861的啟動(dòng)流程。目前Hi386
    發(fā)表于 10-27 19:05

    SYS_RUN()和MODULE_INIT()之間的那些事精華

    語句 SYS_RUN(app_entry); 指定,其中 app_entry 是設(shè)備程序入口函數(shù)名;而整個(gè)鴻蒙設(shè)備的啟動(dòng)流程也可以順理成章的挖掘出來。如下圖:這看起來非常完美了,解決了所有問題!可是,我
    發(fā)表于 12-10 10:17

    激光測(cè)距設(shè)計(jì)大致流程

    激光測(cè)距設(shè)計(jì):大致流程:1,基本原理和關(guān)鍵:激光脈沖測(cè)距與雷達(dá)測(cè)距在原理上是完全相同的。在測(cè)距點(diǎn)激光發(fā)射機(jī)向被測(cè)目標(biāo)發(fā)射激光脈沖,光脈沖穿過大氣到達(dá)目標(biāo),其中一小部分激光經(jīng)目標(biāo)反射后返回測(cè)距點(diǎn),并被
    發(fā)表于 09-14 08:24

    ARM中斷異常的大致流程是怎樣去實(shí)現(xiàn)的

    表:異常處理的大致流程主要針對(duì)中斷進(jìn)行講解,其他的類似2. 中斷異常當(dāng)手機(jī)接到一個(gè)電話時(shí),電話模塊他會(huì)接到這個(gè)信號(hào),電話和手機(jī)內(nèi)部的CPU通過某個(gè)管腳相連,電話模塊通過這個(gè)管教把信號(hào)發(fā)給CPU,CPU
    發(fā)表于 04-26 09:37

    matlab自定義函數(shù)調(diào)用方法

    matlab自定義函數(shù)調(diào)用方法 命令文件/函數(shù)文件+ 函數(shù)文件 - 多
    發(fā)表于 11-29 13:14 ?88次下載

    vb調(diào)用excel方法大全

    電子發(fā)燒友網(wǎng)站提供《vb調(diào)用excel方法大全.docx》資料免費(fèi)下載
    發(fā)表于 04-14 10:27 ?6次下載

    OTP語音芯片電路的大致制作方法

    都知道語音芯片大致分為OTP語音芯片和MASK語音芯片,可又有幾人知道OTP語音芯片電路的制作方法呢?下面小編就和大家分享下OTP語音芯片電路的大致制作方法: OTP語音芯片主要
    的頭像 發(fā)表于 06-17 09:18 ?2876次閱讀

    run-jetty-run jetty eclipse插件

    ./oschina_soft/run-jetty-run.zip
    發(fā)表于 05-17 09:46 ?1次下載
    <b class='flag-5'>run-jetty-run</b> jetty eclipse插件

    C調(diào)用matlab方法

    C調(diào)用matlab方法介紹
    發(fā)表于 07-31 10:55 ?0次下載

    微服務(wù)循環(huán)依賴調(diào)用引發(fā)的血案

    順著測(cè)試匯報(bào)的出現(xiàn)問題的場(chǎng)景,跟蹤調(diào)用鏈上相關(guān)服務(wù)的日志,發(fā)現(xiàn)出現(xiàn)了微服務(wù)之間循依賴調(diào)用大致情況可以抽象如下所示(圖中所有調(diào)用都是 http 協(xié)議)
    的頭像 發(fā)表于 01-16 10:28 ?748次閱讀

    說說SpringBoot啟動(dòng)流程

    首先從main找到run()方法,在執(zhí)行run()方法之前new一個(gè)SpringApplication對(duì)象
    的頭像 發(fā)表于 03-28 17:52 ?1485次閱讀

    Spring Boot啟動(dòng) Eureka流程

    (String[] args) { SpringApplication .run (EurekaServer.class, args); }} 上面的代碼是最最平常的 Spring Boot 啟動(dòng)類
    的頭像 發(fā)表于 10-10 11:40 ?930次閱讀
    Spring Boot啟動(dòng) Eureka<b class='flag-5'>流程</b>

    super調(diào)用父類的構(gòu)造方法

    我們分析這句話“父類對(duì)象的引用”,那說明我們使用的時(shí)候只能在子類中使用,既然是對(duì)象的引用,那么我們也可以用來調(diào)用成員屬性以及成員方法,當(dāng)然了,這里的 super 關(guān)鍵字還能夠調(diào)用父類的構(gòu)造方法
    的頭像 發(fā)表于 10-10 16:42 ?976次閱讀
    super<b class='flag-5'>調(diào)用</b>父類的構(gòu)造<b class='flag-5'>方法</b>
    试玩百家乐官网游戏机| 真人百家乐官网网络游戏信誉怎么样 | 线上百家乐官网代理| 百家乐怎么压对子| 足球竞猜| 网上百家乐官网大赢家筹码| 百家乐书籍| 皇朝娱乐城| 百家乐官网缩水软件| 大富豪棋牌游戏下载| 百家乐官网平台有什么优惠| 网络百家乐电脑| 堆龙德庆县| 百家乐好不好玩| 大发888娱乐城| 索罗门百家乐官网的玩法技巧和规则 | 百家乐云顶| 百家乐官网一直下注庄家| 百家乐网上真钱赌场娱乐网规则 | 免费百家乐追号软件| 百家乐官网知识技巧玩法| 威尼斯人娱乐项目| 游戏百家乐官网的玩法技巧和规则| 大发888备用网址大全| 澳门百家乐官网规| 金博士娱乐城优惠| 百家乐赌博出千| 鄂州市| 百家乐在线赌场娱乐网规则| 百家乐官网小音箱| 大发888娱乐城网站| 新花园百家乐官网的玩法技巧和规则 | 百家乐官网官| 零点棋牌官方下载| 网上百家乐分析软件| 大发888卡| 百家乐软件l柳州| 正规百家乐官网游戏下载| 大发888老虎机手机版| 百家乐赌场国际| 澳门百家乐官网怎样下注|