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

溫馨提示×

溫馨提示×

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

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

SpringBoot怎么實現啟動時自動執行代碼

發布時間:2022-02-17 13:42:45 來源:億速云 閱讀:345 作者:iii 欄目:開發技術

這篇文章主要介紹了SpringBoot怎么實現啟動時自動執行代碼的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇SpringBoot怎么實現啟動時自動執行代碼文章都會有所收獲,下面我們一起來看看吧。

    前言

    目前開發的SpringBoot項目在啟動的時候需要預加載一些資源。而如何實現啟動過程中執行代碼,或啟動成功后執行,是有很多種方式可以選擇,我們可以在static代碼塊中實現,也可以在構造方法里實現,也可以使用@PostConstruct注解實現。

    當然也可以去實現Spring的ApplicationRunner與CommandLineRunner接口去實現啟動后運行的功能。在這里整理一下,在這些位置執行的區別以及加載順序。

    java自身的啟動時加載方式

    static代碼塊

    static靜態代碼塊,在類加載的時候即自動執行。

    構造方法

    在對象初始化時執行。執行順序在static靜態代碼塊之后。

    Spring啟動時加載方式

    @PostConstruct注解

    PostConstruct注解使用在方法上,這個方法在對象依賴注入初始化之后執行。

    ApplicationRunner和CommandLineRunner

    SpringBoot提供了兩個接口來實現Spring容器啟動完成后執行的功能,兩個接口分別為CommandLineRunner和ApplicationRunner。

    這兩個接口需要實現一個run方法,將代碼在run中實現即可。這兩個接口功能基本一致,其區別在于run方法的入參。ApplicationRunner的run方法入參為ApplicationArguments,為CommandLineRunner的run方法入參為String數組。

    何為ApplicationArguments

    官方文檔解釋為:

    ”Provides access to the arguments that were used to run a SpringApplication.

    在Spring應用運行時使用的訪問應用參數。即我們可以獲取到SpringApplication.run(…)的應用參數。

    Order注解

    當有多個類實現了CommandLineRunner和ApplicationRunner接口時,可以通過在類上添加@Order注解來設定運行順序。

    代碼測試

    為了測試啟動時運行的效果和順序,編寫幾個測試代碼來運行看看。

    TestPostConstruct

    @Component
    public class TestPostConstruct {
    
        static {
            System.out.println("static");
        }
        public TestPostConstruct() {
            System.out.println("constructer");
        }
    
        @PostConstruct
        public void init() {
            System.out.println("PostConstruct");
        }
    }

    TestApplicationRunner

    @Component
    @Order(1)
    public class TestApplicationRunner implements ApplicationRunner{
        @Override
        public void run(ApplicationArguments applicationArguments) throws Exception {
            System.out.println("order1:TestApplicationRunner");
        }
    }

    TestCommandLineRunner

    @Component
    @Order(2)
    public class TestCommandLineRunner implements CommandLineRunner {
        @Override
        public void run(String... strings) throws Exception {
            System.out.println("order2:TestCommandLineRunner");
        }
    }

    執行結果

    SpringBoot怎么實現啟動時自動執行代碼

    關于“SpringBoot怎么實現啟動時自動執行代碼”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“SpringBoot怎么實現啟動時自動執行代碼”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

    向AI問一下細節

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

    AI

    精河县| 瑞安市| 邵阳县| 正宁县| 陆川县| 焦作市| 南漳县| 临海市| 望奎县| 宾川县| 秦皇岛市| 棋牌| 湖口县| 霍州市| 洪泽县| 甘泉县| 麻江县| 海门市| 米泉市| 中山市| 岳池县| 高阳县| 株洲市| 名山县| 苗栗县| 延津县| 体育| 长岭县| 玛沁县| 当雄县| 洪湖市| 华容县| 汕头市| 西乌珠穆沁旗| 襄垣县| 蒙城县| 来安县| 杂多县| 错那县| 客服| 泾阳县|