SpringBoot程序启动时执行初始化代码

Posted stonesingsong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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);
    }
}

 

以上是关于SpringBoot程序启动时执行初始化代码的主要内容,如果未能解决你的问题,请参考以下文章

在SpringBoot中,怎么在应用程序启动或退出时执行初始化或者清理工作?

SpringBoot 初始化之7招式

Spring Boot 项目启动两种自动执行方法的实现方式

SpringBoot启动时实现自动执行代码的几种方式讲解

SpringBoot启动时实现自动执行代码的几种方式讲解

将初始化代码添加到 Spring Boot 应用程序的正确方法是啥?