springboot項目啟動之后,需要主動執(zhí)行一些方法

springboot項目啟動之后,需要主動執(zhí)行一些方法??墒褂靡韵聝煞N方法:

1. @Component 實現(xiàn)`ApplicationRunner 類

package com.bnq.privacy.server.config;

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.stereotype.Component;

import java.text.ParseException;

/**
 * get up mns way after application run
 *
 * @author HongYi@10004580
 * @createTime 2021年03月02日 17:46:00
 */
@Component
public class MnsApplicationRunner implements ApplicationRunner {
    private static final Logger logger = LoggerFactory.getLogger(MnsApplicationRunner.class);

    @Override
    public void run(ApplicationArguments args) throws Exception {
        logger.info("==== 喚醒通話記錄監(jiān)聽開始 ===");
        getReportMsg();
        logger.info("==== 喚醒通話記錄監(jiān)聽成功 ===");
    }
}

2. @Component 實現(xiàn)CommandLineRunner

@Component
public class DemoComLiner implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        System.out.println("CommandLineRunner");
    }
}

以上兩個XXXRunner接口,如果有多個實現(xiàn)其中同一個,可以通過@Order(123)注解進行排序,進行順序執(zhí)行。

另外,如果方法執(zhí)行失敗,可能造成springboot啟動不成功。第一個demo中,由于getReportMsg()方法中有一個包找不到,導致程序直接重啟了一晚上,第二天早上來才知道,還好只是測試環(huán)境。

由于項目使用的是springboot + dubbo ,在本地測試的時候,正常啟動項目之后,MnsApplicationRunner implements ApplicationRunner是可以的。但是發(fā)布到線上環(huán)境之后,發(fā)現(xiàn)并不可以,日志未打出,想要實現(xiàn)的喚醒MQ監(jiān)聽也未實現(xiàn)。于是換了下面一種寫法。

在springboot的啟動類中添加:

    @Bean
    public ApplicationRunner runner() {
        return args -> {
            logger.info("==== 喚醒通話記錄監(jiān)聽開始 ===");
            this.getReportMsg();
            logger.info("==== 喚醒通話記錄監(jiān)聽成功 ===");
            logger.info("==== 喚醒通話錄音監(jiān)聽開始 ===");
            this.getRecordingMsg();
            logger.info("==== 喚醒通話錄音監(jiān)聽成功 ===");
        };
    }

再在測試環(huán)境啟動項目,成功!

dubbo測試環(huán)境ok.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容