今天就跟大家聊聊有關(guān)怎么在Spring Boot中啟動(dòng)及退出加載項(xiàng),可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
十年建站經(jīng)驗(yàn), 網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作客戶的見證與正確選擇。創(chuàng)新互聯(lián)提供完善的營銷型網(wǎng)頁建站明細(xì)報(bào)價(jià)表。后期開發(fā)更加便捷高效,我們致力于追求更美、更快、更規(guī)范。
如果你需要在啟動(dòng)SpringApplication后執(zhí)行一些具體的代碼,你可以實(shí)現(xiàn)ApplicaitonRunner
或者CommandLineRunner
接口。兩個(gè)接口都實(shí)現(xiàn)了一個(gè)工作方式相同的run
方法,該方法僅會(huì)在SpringApplication.run(...)前執(zhí)行。
唯一不同的是實(shí)現(xiàn)CommandLineRunner
接口的run
方法參數(shù)為String
類型,而實(shí)現(xiàn)ApplicaitonRunner
的run
方法的參數(shù)則是需要ApplicationArguments
。官方文檔中有個(gè)例子供參考。
如果有多個(gè)ApplicaitonRunner
或者CommandLineRunner
接口的實(shí)現(xiàn)存在啟動(dòng)順序,則可以使用org.springframework.core.Ordered
接口或者org.springframework.core.annotation.Order
注解的形式來給他們排序。
由于我沒有參數(shù)類型等的限制,所以用哪個(gè)接口都一樣,寫個(gè)跟官方不一樣的,于是代碼大概長這樣:
import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Component; @Component public class InstructionStart implements ApplicationRunner { private Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired private JdbcTemplate template; @Override public void run(ApplicationArguments applicationArguments) throws Exception { String increment = "0"; logger.info("初始化遞增起始值為:{}", increment); template.execute("ALTER TABLE `table` AUTO_INCREMENT = " + increment); } }
深刻的意識(shí)到腦子和屁股一樣重要。
寫完啟動(dòng)項(xiàng),那么再把退出也說一下:
每一個(gè)SpringApplication
都應(yīng)該向JVM
注冊(cè)一個(gè)鉤子函數(shù)來確保ApplicationContext
能優(yōu)雅地關(guān)閉。使所有的標(biāo)準(zhǔn)Spring
生命周期回調(diào)(例如DisposableBean
接口和@PreDestroy
注解)都可用。
此外,如果你希望beans在調(diào)用SpringApplication.exit()
時(shí)返回特定的退出代碼,則可以實(shí)現(xiàn)org.springframework.boot.ExitCodeGenerator
接口,這些退出代碼會(huì)被傳給System.exit()
作為返回的狀態(tài)碼。官方還給了個(gè)例子,就是下面這個(gè)。
@SpringBootApplication public class ExitCodeApplication { @Bean public ExitCodeGenerator exitCodeGenerator() { return () -> 42; } public static void main(String[] args) { System.exit(SpringApplication .exit(SpringApplication.run(ExitCodeApplication.class, args))); } }
當(dāng)然,ExitCodeGenerator
也可以由異常來實(shí)現(xiàn),當(dāng)遇到一個(gè)這樣的異常時(shí),Sprin Boot會(huì)返回實(shí)現(xiàn)了getExitCode()
方法的退出代碼。
springboot一種全新的編程規(guī)范,其設(shè)計(jì)目的是用來簡化新Spring應(yīng)用的初始搭建以及開發(fā)過程,SpringBoot也是一個(gè)服務(wù)于框架的框架,服務(wù)范圍是簡化配置文件。
看完上述內(nèi)容,你們對(duì)怎么在Spring Boot中啟動(dòng)及退出加載項(xiàng)有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。