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)容:
默認(rèn)情況下,會(huì)顯示INFO級(jí)別的日志信息,包括一些相關(guān)的啟動(dòng)詳情,比如啟動(dòng)應(yīng)用的用戶等。
通過(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()方法。
如果默認(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配置或要掃描包的引用。
除了常見的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ā)送:
注:你通常不需要使用應(yīng)用程序事件,但知道它們的存在會(huì)很方便(在某些場(chǎng)合可能會(huì)使用到)。在Spring內(nèi)部,Spring Boot使用事件處理各種各樣的任務(wù)。
一個(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)是可取的。
如果你想獲取原始的命令行參數(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注解。
每個(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接口。
小編推薦閱讀機(jī)器學(xué)習(xí):神經(jīng)網(wǎng)絡(luò)構(gòu)建(下)
閱讀華為Mate品牌盛典:HarmonyOS NEXT加持下游戲性能得到充分釋放
閱讀實(shí)現(xiàn)對(duì)象集合與DataTable的相互轉(zhuǎn)換
閱讀鴻蒙NEXT元服務(wù):論如何免費(fèi)快速上架作品
閱讀算法與數(shù)據(jù)結(jié)構(gòu) 1 - 模擬
閱讀5. Spring Cloud OpenFeign 聲明式 WebService 客戶端的超詳細(xì)使用
閱讀Java代理模式:靜態(tài)代理和動(dòng)態(tài)代理的對(duì)比分析
閱讀Win11筆記本“自動(dòng)管理應(yīng)用的顏色”顯示規(guī)則
閱讀本站所有軟件,都由網(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)