溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringBoot在項目啟動之后執(zhí)行自定義方法的兩種方式分別是什么

發(fā)布時間:2021-09-24 16:08:15 來源:億速云 閱讀:131 作者:柒染 欄目:開發(fā)技術

SpringBoot在項目啟動之后執(zhí)行自定義方法的兩種方式分別是什么,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

    SpringBoot 項目啟動之后執(zhí)行自定義方法的兩種方式

    在測試配置中心的配置時,想在項目啟動成功之后打印配置項,然后需要執(zhí)行自定義的類

    一般項目中也會在這個地方進行初始化數(shù)據(jù)的一些操作

    方式一 實現(xiàn) CommandLineRunner 接口

    自定義類并實現(xiàn) CommandLineRunner 接口,實現(xiàn)run()方法,需要執(zhí)行的語句就放在 run() 方法中

    例:

    @Component
    @Order(1)  // 控制類執(zhí)行的順序越小越靠前
    public class StartInitializer implements CommandLineRunner {
        @Override
        public void run(String... args) throws Exception {
            System.out.println("項目啟動,執(zhí)行 CommandLineRunner 實現(xiàn)類的方法");
        }
    }

    方式二 實現(xiàn) ApplicationRunner 接口

    自定義類并實現(xiàn) ApplicationRunner 接口,實現(xiàn)run()方法,需要執(zhí)行的語句就放在 run() 方法中

    例:

    @Component
    @Order(2) // 控制類執(zhí)行的順序越小越靠前
    public class AppInitializer implements ApplicationRunner {
        @Override
        public void run(ApplicationArguments args) throws Exception {
            System.out.println("項目啟動,執(zhí)行 ApplicationRunner 實現(xiàn)類的方法");
        }
    }

    二者區(qū)別

    區(qū)別在于實現(xiàn)方法 run() 中的參數(shù)類型不一樣

    實現(xiàn) ApplicationRunner 接口的 run() 方法參數(shù)類型為: ApplicationArguments

    實現(xiàn) CommandLineRunner 接口的 run() 方法參數(shù)類型為: String...

    實現(xiàn)效果

    SpringBoot在項目啟動之后執(zhí)行自定義方法的兩種方式分別是什么

    Springboot 項目啟動后執(zhí)行某些自定義代碼

    Springboot給我們提供了兩種“開機啟動”某些方法的方式:ApplicationRunner和CommandLineRunner。

    這兩種方法提供的目的是為了滿足,在項目啟動的時候立刻執(zhí)行某些方法。我們可以通過實現(xiàn)ApplicationRunner和CommandLineRunner,來實現(xiàn),他們都是在SpringApplication 執(zhí)行之后開始執(zhí)行的。

    CommandLineRunner接口可以用來接收字符串數(shù)組的命令行參數(shù),ApplicationRunner 是使用ApplicationArguments 用來接收參數(shù)的

    代碼示例

    @Component//被spring容器管理
    @Order(1)//如果多個自定義ApplicationRunner,用來標明執(zhí)行順序
    public class MyApplicationRunner implements ApplicationRunner {
        @Override
        public void run(ApplicationArguments applicationArguments) throws Exception {
            System.out.println("-------------->" + "項目啟動,now=" + new Date());
            myTimer();
        }
        public static void myTimer(){
            Timer timer = new Timer();
            timer.schedule(new TimerTask() {
                @Override
                public void run() {
                    System.out.println("------定時任務--------");
                }
            }, 0, 1000);
        }
    }

    執(zhí)行結果

    2018-02-08 14:10:16.490  INFO 10236 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8081 (http)
    -------------->項目啟動,now=Thu Feb 08 14:10:16 CST 2018
    ------定時任務--------
    2018-02-08 14:10:16.497  INFO 10236 --- [           main] com.mlxs.springboot01.web.MainApp        : Started MainApp in 5.595 seconds (JVM running for 6.334)
    ------定時任務--------
    ------定時任務--------
    ------定時任務--------
    ------定時任務--------
    ------定時任務--------
    ------定時任務--------

    看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

    向AI問一下細節(jié)

    免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

    AI