SpringBoot項目啟動時執(zhí)行指定的方法
項目場景:
本文介紹Spring Boot項目啟動時執(zhí)行指定的方法兩種常用方式和他們之間的區(qū)別。
實現(xiàn)方案:
方式一:使用注解@PostConstruct
@Component
public class PostConstructTest {
@PostConstruct
public void postConstruct() {
System.out.println("啟動時自動執(zhí)行 @PostConstruct 注解方法");
}
}優(yōu)點: 簡單方便,加上一個注解就行了。
缺點:如果@PostConstruct方法內(nèi)的邏輯處理時間較長,就會增加SpringBoot應(yīng)用初始化Bean的時間,進而增加應(yīng)用啟動的時間。因為只有在Bean初始化完成后,SpringBoot應(yīng)用才會打開端口提供服務(wù),所以在此之前,應(yīng)用不可訪問。
建議:輕量的邏輯可放在Bean的@PostConstruct方法中,耗時長的邏輯如果放在@PostConstruct方法中,可使用@Async異步方法。
使用異步代碼示例:
@Service
public class TestService {
@Async("testAsync") //指定線程池
public void test() {
System.out.println("------------------------異步方法開始 " + Thread.currentThread().getName());
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("----------------異步方法執(zhí)行完了" + Thread.currentThread().getName());
}
}
@Component
public class PostConstructTest {
@Autowired
private TestService testService;
@PostConstruct
public void postConstruct() {
System.out.println("啟動時自動執(zhí)行 @PostConstruct 注解方法");
testService.test();
}
}Spring Boot中多個PostConstruct注解執(zhí)行順序控制
方式二:實現(xiàn)CommandLineRunner接口
@Component
public class CommandLineRunnerImpl implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
System.out.println("啟動時自動執(zhí)行 CommandLineRunner 的 run 方法");
}
}優(yōu)點: 項目已經(jīng)初始化完畢,才會執(zhí)行方法,所以不用等這個方法執(zhí)行完,就可以正常提供服務(wù)了。
缺點:暫未發(fā)現(xiàn)。
到此這篇關(guān)于SpringBoot項目啟動時執(zhí)行指定的方法的文章就介紹到這了,更多相關(guān)SpringBoot項目啟動時執(zhí)行指定內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot啟動時自動執(zhí)行指定方法的幾種實現(xiàn)方式
- IntelliJ IDEA下SpringBoot如何指定某一個配置文件啟動項目
- springBoot?啟動指定配置文件環(huán)境多種方案(最新推薦)
- IDEA下SpringBoot指定環(huán)境、配置文件啟動操作過程
- SpringBoot啟動時加載指定方法的方式小結(jié)
- SpringBoot啟動時如何通過啟動參數(shù)指定logback的位置
- springboot指定profiles啟動失敗問題及解決
- springboot 項目容器啟動后如何自動執(zhí)行指定方法
- springboot項目啟動指定對應(yīng)環(huán)境的方法
相關(guān)文章
圖解Java?ReentrantLock的條件變量Condition機制
想必大家都使用過wait()和notify()這兩個方法把,他們主要用于多線程間的協(xié)同處理。而RenentrantLock也支持這樣條件變量的能力,而且相對于synchronized?更加強大,能夠支持多個條件變量,本文就來詳細說說2022-10-10
SpringBoot?使用?Sa-Token?完成注解鑒權(quán)功能(權(quán)限校驗)
Sa-Token?是一個輕量級?java?權(quán)限認證框架,主要解決登錄認證、權(quán)限認證、單點登錄、OAuth2、微服務(wù)網(wǎng)關(guān)鑒權(quán)?等一系列權(quán)限相關(guān)問題,這篇文章主要介紹了SpringBoot使用Sa-Token完成注解鑒權(quán)功能,需要的朋友可以參考下2023-05-05
Springboot集成Jasypt實現(xiàn)配置文件加密的方法
Jasypt是一個java庫,它允許開發(fā)員以最少的努力為他/她的項目添加基本的加密功能,并且不需要對加密工作原理有深入的了解,這篇文章主要介紹了Springboot集成Jasypt實現(xiàn)配置文件加密,需要的朋友可以參考下2023-04-04

