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應用初始化Bean的時間,進而增加應用啟動的時間。因為只有在Bean初始化完成后,SpringBoot應用才會打開端口提供服務,所以在此之前,應用不可訪問。
建議:輕量的邏輯可放在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í)行完,就可以正常提供服務了。
缺點:暫未發(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項目啟動指定對應環(huán)境的方法
相關(guān)文章
Java實現(xiàn)大數(shù)據(jù)量查詢處理的詳細方案介紹
在實際開發(fā)中,經(jīng)常遇到需要查詢大量數(shù)據(jù)的場景,例如訂單歷史數(shù)據(jù)導出,報表統(tǒng)計查詢等,這篇文章小編就和大家詳細介紹一下如何優(yōu)化該場景吧2026-01-01
Springcould多模塊搭建Eureka服務器端口過程詳解
這篇文章主要介紹了Springcould多模塊搭建Eureka服務器端口過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-11-11
springboot schedule 解決定時任務不執(zhí)行的問題
這篇文章主要介紹了springboot schedule 解決定時任務不執(zhí)行的問題,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-09-09
Java數(shù)據(jù)結(jié)構(gòu)之鏈表(動力節(jié)點之Java學院整理)
這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)之鏈表(動力節(jié)點之Java學院整理)的相關(guān)資料,需要的朋友可以參考下2017-04-04

