Spring Boot非Web項(xiàng)目運(yùn)行的方法
有時(shí)候一些項(xiàng)目并不需要提供 Web 服務(wù),例如跑定時(shí)任務(wù)的項(xiàng)目,如果都按照 Web 項(xiàng)目啟動(dòng)未免畫(huà)蛇添足浪費(fèi)資源
為了達(dá)到非 Web 運(yùn)行的效果,首先調(diào)整 Maven 依賴(lài),不再依賴(lài) spring-boot-starter-web,轉(zhuǎn)而依賴(lài)最基礎(chǔ)的 spring-boot-starter:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> </dependencies>
此時(shí)按照原先的方式啟動(dòng) SpringBootApplication 會(huì)發(fā)現(xiàn)啟動(dòng)加載完之后會(huì)立即退出,這時(shí)需要做點(diǎn)工作讓主線程阻塞讓程序不退出:
@SpringBootApplication
public class SampleApplication implements CommandLineRunner {
public static void main(String[] args) throws Exception {
SpringApplication.run(SampleApplication.class, args);
}
@Override
public void run(String... args) throws Exception {
Thread.currentThread().join();
}
}
這里利用了 SpringBoot 提供的 CommandLineRunner 特性,這個(gè)名字比較有欺騙性,實(shí)際效果如下:
SpringBoot 應(yīng)用程序在啟動(dòng)后,會(huì)遍歷 CommandLineRunner 接口的實(shí)例并運(yùn)行它們的 run 方法。也可以利用 @Order 注解(或者實(shí)現(xiàn)Order接口)來(lái)規(guī)定所有 CommandLineRunner 實(shí)例的運(yùn)行順序
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
詳解java爬蟲(chóng)jsoup解析多空格class數(shù)據(jù)
在本篇內(nèi)容中小編給大家分享了java爬蟲(chóng)jsoup怎么解析多空格class數(shù)據(jù)的方法和技巧,需要的朋友們跟著學(xué)習(xí)下。2018-12-12
springBoot熱部署、請(qǐng)求轉(zhuǎn)發(fā)與重定向步驟詳解
這篇文章主要介紹了springBoot熱部署、請(qǐng)求轉(zhuǎn)發(fā)與重定向,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06
ActiveMQ消息隊(duì)列技術(shù)融合Spring過(guò)程解析
這篇文章主要介紹了ActiveMQ消息隊(duì)列技術(shù)融合Spring過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11
java string類(lèi)的常用方法詳細(xì)介紹
在開(kāi)發(fā)過(guò)程中經(jīng)常會(huì)使用到j(luò)ava string類(lèi)的方法,本文將以此問(wèn)題進(jìn)行詳細(xì)介紹2012-11-11
淺析Java中關(guān)鍵詞volatile底層的實(shí)現(xiàn)原理
在 Java 并發(fā)編程中,有 3 個(gè)最常用的關(guān)鍵字:synchronized、ReentrantLock 和 volatile,這篇文章主要來(lái)和大家聊聊volatile底層的實(shí)現(xiàn)原理,感興趣的可以了解下2024-02-02

