您的位置:首頁(yè) > 軟件教程 > 教程 > SpringApplication類的介紹與使用指南

SpringApplication類的介紹與使用指南

來(lái)源:好特整理 | 時(shí)間:2024-04-08 08:49:22 | 閱讀:78 |  標(biāo)簽: T cat 從零開始 Ri S C in 開始 app   | 分享到:

SpringApplication類提供了一種從main()方法啟動(dòng)Spring應(yīng)用的便捷方式。在很多情況下, 你只需委托給 SpringApplication.run這個(gè)靜態(tài)方法 : @SpringBootApplication public class SpringbootLearningApp

SpringApplication類提供了一種便捷的方式,通過(guò)main()方法啟動(dòng)Spring應(yīng)用。在許多情況下,你只需使用SpringApplication.run這個(gè)靜態(tài)方法:

@SpringBootApplication
public class SpringbootLearningApplication {

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

}

當(dāng)應(yīng)用啟動(dòng)時(shí),你應(yīng)該看到類似下面的內(nèi)容:

SpringApplication類的介紹與使用指南

默認(rèn)情況下,會(huì)顯示INFO級(jí)別的日志信息,包括一些相關(guān)的啟動(dòng)詳情,比如啟動(dòng)應(yīng)用的用戶等。

自定義Banner

通過(guò)在classpath下添加一個(gè)banner.txt文件或設(shè)置banner.location來(lái)指定相應(yīng)的文件,可以改變啟動(dòng)過(guò)程中打印的banner。如果這個(gè)文件有特殊的編碼,你可以使用banner.encoding設(shè)置它(默認(rèn)為UTF-8)。

在banner.txt中可以使用如下的變量:

變量 描述
application.version MANIFEST.MF中聲明的應(yīng)用版本號(hào),例如1.0
application.formatted-version MANIFEST.MF中聲明的被格式化后的應(yīng)用版本號(hào)(被括號(hào)包裹且以v作為前綴),用于顯示,例如(v1.0)
spring-boot.version 正在使用的Spring Boot版本號(hào),例如3.2.3
spring-boot.formatted-version 正在使用的Spring Boot被格式化后的版本號(hào)(被括號(hào)包裹且以v作為前綴), 用于顯示,例如(v3.2.3)

注: 如果想以編程的方式產(chǎn)生一個(gè)banner,可以使用SpringBootApplication.setBanner(…)方法。使用org.springframework.boot.Banner接口,實(shí)現(xiàn)你自己的printBanner()方法。

自定義SpringApplication

如果默認(rèn)的SpringApplication不符合你的口味,你可以創(chuàng)建一個(gè)本地的實(shí)例并自定義它。例如,關(guān)閉banner你可以這樣寫:

@SpringBootApplication
public class SpringbootLearningApplication {

    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(SpringbootLearningApplication.class);
        app.setBannerMode(Banner.Mode.OFF);
        app.run(args);
    }

}

注: 傳遞給SpringApplication的構(gòu)造器參數(shù)是spring beans的配置源。在大多數(shù)情況下,這些將是@Configuration類的引用,但它們也可能是XML配置或要掃描包的引用。

Application事件和監(jiān)聽器

除了常見的Spring框架事件,比如ContextRefreshedEvent,一個(gè)SpringApplication也發(fā)送一些額外的應(yīng)用事件。一些事件實(shí)際上是在ApplicationContext被創(chuàng)建前觸發(fā)的。

你可以使用多種方式注冊(cè)事件監(jiān)聽器,最普通的是使用SpringApplication.addListeners(…)方法。在你的應(yīng)用運(yùn)行時(shí),應(yīng)用事件會(huì)以下面的次序發(fā)送:

  1. 在運(yùn)行開始,但除了監(jiān)聽器注冊(cè)和初始化以外的任何處理之前,會(huì)發(fā)送一個(gè)ApplicationStartedEvent。
  2. 在Environment將被用于已知的上下文,但在上下文被創(chuàng)建前,會(huì)發(fā)送一個(gè)ApplicationEnvironmentPreparedEvent。
  3. 在refresh開始前,但在bean定義已被加載后,會(huì)發(fā)送一個(gè)ApplicationPreparedEvent。
  4. 啟動(dòng)過(guò)程中如果出現(xiàn)異常,會(huì)發(fā)送一個(gè)ApplicationFailedEvent。

注:你通常不需要使用應(yīng)用程序事件,但知道它們的存在會(huì)很方便(在某些場(chǎng)合可能會(huì)使用到)。在Spring內(nèi)部,Spring Boot使用事件處理各種各樣的任務(wù)。

Web環(huán)境

一個(gè)SpringApplication將嘗試為你創(chuàng)建正確類型的ApplicationContext。在默認(rèn)情況下,使用AnnotationConfigApplicationContext或AnnotationConfigEmbeddedWebApplicationContext取決于你正在開發(fā)的是否是web應(yīng)用。

用于確定一個(gè)web環(huán)境的算法相當(dāng)簡(jiǎn)單(基于是否存在某些類)。如果需要覆蓋默認(rèn)行為,你可以使用setWebEnvironment(boolean webEnvironment)。通過(guò)調(diào)用setApplicationContextClass(…),你可以完全控制ApplicationContext的類型。

注: 當(dāng)JUnit測(cè)試?yán)锸褂肧pringApplication時(shí),調(diào)用setWebEnvironment(false)是可取的。

命令行啟動(dòng)器

如果你想獲取原始的命令行參數(shù),或一旦SpringApplication啟動(dòng),你需要運(yùn)行一些特定的代碼,你可以實(shí)現(xiàn)CommandLineRunner接口。在所有實(shí)現(xiàn)該接口的Spring beans上將調(diào)用run(String … args)方法。

@Component
public class MyBean implements CommandLineRunner {

    @Override
    public void run(String... args) throws Exception {
        System.out.println("啟動(dòng)前執(zhí)行");
    }
}

如果一些CommandLineRunner beans被定義必須以特定的次序調(diào)用,你可以額外實(shí)現(xiàn)org.springframework.core.Ordered接口或使用org.springframework.core.annotation.Order注解。

Application退出

每個(gè)SpringApplication在退出時(shí)為了確保ApplicationContext被優(yōu)雅的關(guān)閉,將會(huì)注冊(cè)一個(gè)JVM的shutdown鉤子。所有標(biāo)準(zhǔn)的Spring生命周期回調(diào)(比如,DisposableBean接口或@PreDestroy注解)都能使用。

此外,如果beans想在應(yīng)用結(jié)束時(shí)返回一個(gè)特定的退出碼(exit code),可以實(shí)現(xiàn)org.springframework.boot.ExitCodeGenerator接口。

小編推薦閱讀

好特網(wǎng)發(fā)布此文僅為傳遞信息,不代表好特網(wǎng)認(rèn)同期限觀點(diǎn)或證實(shí)其描述。

從零開始
從零開始
類型:動(dòng)作冒險(xiǎn)  運(yùn)營(yíng)狀態(tài):內(nèi)測(cè)  語(yǔ)言:中文   

游戲攻略

游戲禮包

游戲視頻

游戲下載

游戲活動(dòng)

《從零開始》是游戲商從零開始游戲工作室開發(fā)的一款多人在線的沙盒冒險(xiǎn)游戲,游戲采用龐大的無(wú)縫沙盒地圖
RPG Ri序章 0.2.1
RPG Ri序章 0.2.1
類型:角色扮演  運(yùn)營(yíng)狀態(tài):正式運(yùn)營(yíng)  語(yǔ)言: 日文  

游戲攻略

游戲禮包

游戲視頻

游戲下載

游戲活動(dòng)

《RPG_Ri序章》是GameMaker'Child-Dream'制作的一款幻想廢土風(fēng)RPG手游,完全免費(fèi)的幻想廢土風(fēng)RPG登場(chǎng)!元

相關(guān)視頻攻略

更多

掃二維碼進(jìn)入好特網(wǎng)手機(jī)版本!

掃二維碼進(jìn)入好特網(wǎng)微信公眾號(hào)!

本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權(quán),請(qǐng)發(fā)郵件[email protected]

湘ICP備2022002427號(hào)-10 湘公網(wǎng)安備:43070202000427號(hào)© 2013~2025 haote.com 好特網(wǎng)