SpringBoot程序啟動時執行初始化代碼


因項目集成了Redis緩存部分數據,需要在程序啟動時將數據加載到Redis中,即初始化數據到Redis。

在SpringBoot項目下,即在容器初始化完畢后執行我們自己的初始化代碼。

 

第一步:創建實現ApplicationListener接口的類

package com.stone;

import com.stone.service.IPermissionService;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;

/**
 * @author Stone Yuan
 * @create 2017-12-02 21:54
 * @description
 */
public class ApplicationStartup implements ApplicationListener<ContextRefreshedEvent> {

    @Override
    public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
        IPermissionService service = contextRefreshedEvent.getApplicationContext().getBean(IPermissionService.class);
        service.loadUserPermissionIntoRedis();
    }
}

注意:

1、我們自己的初始化代碼寫在onApplicationEvent里;

2、ContextRefreshedEvent是Spring的ApplicationContextEvent一個實現,在容器初始化完成后調用;

3、以注解的方式注入我們需要的bean,會報空指針異常,因此需要以代碼中的方式獲取我們要的bean

 

第二步:在SpringBootApplication中注冊我們剛創建的類

package com.stone;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class YwythApplication {

    public static void main(String[] args) {
        SpringApplication springApplication = new SpringApplication(YwythApplication.class);
        springApplication.addListeners(new ApplicationStartup());
        springApplication.run(args);
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM