崛起於Springboot2.X + 項目啓動初始化方法(30)

《SpringBoot2.X心法總綱》mysql

      (本篇博客已於2019-08-28 優化更新)redis

      場景:證券、基金部分公司在本身業務活動項目啓動以前都會將數據提早加載到redis中.sql

      CommandLineRunner 接口的Component 會在全部Spring Beans都初始化以後,SpringApplication.run()以前執行,很是適合在應用程序啓動之初進行一些數據初始化的工做,ApplicationRunner爲另一種初始化方法緩存

一、初始化類

@Component
public class MjtRunner implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        System.out.println("在這個方法裏能夠初始化數據,加載數據到緩存redis");
    }
}

      若是咱們須要將mysql等數據提早加載到redis中,能夠實現這個類重寫run方法。服務器

二、測試結果

      在啓動類上添加驗證啓動順序ide

@SpringBootApplication
public class Spring5Application {

    public static void main(String[] args) {
        System.out.println("111");
        SpringApplication.run(Spring5Application.class, args);
        System.out.println("2222");
    }
}

      只添加兩行輸出結果,啓動以後,如圖函數

三、編寫多個初始化

      在類上添加@Order註解測試

@Component
@Order(1)
public class MjtRunner implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        System.out.println("在這個方法裏能夠初始化數據,加載數據到緩存redis");
    }
}
@Component
@Order(2)
public class TestRunner implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        System.out.println("在這個方法裏能夠初始化數據,加載數據到緩存redis");
    }
}

      這樣初始化的順序就是從小到大的順序執行。優化

四、第二種使用註解方法

@PostConstruct修飾的方法會在服務器加載Servle的時候運行,而且只會被服務器執行一次。PostConstruct在構造函數以後執行,init()方法以前執行。@PreDestroy()方法在destroy()方法執行執行以後執行,在方法上添加這兩個註解也能夠實現項目啓動以前執行特定的方法。
相關文章
相關標籤/搜索