中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 開發技術 > 
  • SpringBoot在項目啟動之后執行自定義方法的兩種方式分別是什么

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

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

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

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

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

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

    方式一 實現 CommandLineRunner 接口

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

    例:

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

    方式二 實現 ApplicationRunner 接口

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

    例:

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

    二者區別

    區別在于實現方法 run() 中的參數類型不一樣

    實現 ApplicationRunner 接口的 run() 方法參數類型為: ApplicationArguments

    實現 CommandLineRunner 接口的 run() 方法參數類型為: String...

    實現效果

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

    Springboot 項目啟動后執行某些自定義代碼

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

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

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

    代碼示例

    @Component//被spring容器管理
    @Order(1)//如果多個自定義ApplicationRunner,用來標明執行順序
    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);
        }
    }

    執行結果

    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)
    ------定時任務--------
    ------定時任務--------
    ------定時任務--------
    ------定時任務--------
    ------定時任務--------
    ------定時任務--------

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

    向AI問一下細節

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

    AI

    肃宁县| 福建省| 大同市| 博罗县| 定安县| 通化县| 西青区| 泾川县| 洛阳市| 晋州市| 阜南县| 红河县| 定远县| 屏东市| 安岳县| 句容市| 聂荣县| 临安市| 龙川县| 彭山县| 宜兰市| 锡林浩特市| 清河县| 繁峙县| 广饶县| 永康市| 乌兰浩特市| 泉州市| 二连浩特市| 集贤县| 克拉玛依市| 佛学| 金川县| 桂平市| 平远县| 东山县| 南康市| 叶城县| 大英县| 枣庄市| 景泰县|