91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

    集贤县| 剑川县| 无极县| 建阳市| 溆浦县| 湖北省| 屯留县| 疏勒县| 通山县| 台东市| 无棣县| 元谋县| 阳曲县| 迁西县| 应城市| 攀枝花市| 德钦县| 武川县| 扶余县| 读书| 公主岭市| 杭州市| 集安市| 蒲城县| 潜山县| 社会| 开阳县| 固始县| 永康市| 武城县| 佳木斯市| 手机| 开化县| 鹤岗市| 邓州市| 介休市| 虞城县| 玛多县| 双流县| 英吉沙县| 开阳县|