zoukankan      html  css  js  c++  java
  • 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);
        }
    }
  • 相关阅读:
    FZU 2150 Fire Game
    POJ 3414 Pots
    POJ 3087 Shuffle'm Up
    POJ 3126 Prime Path
    POJ 1426 Find The Multiple
    POJ 3278 Catch That Cow
    字符数组
    HDU 1238 Substing
    欧几里德和扩展欧几里德详解 以及例题CodeForces 7C
    Codeforces 591B Rebranding
  • 原文地址:https://www.cnblogs.com/stonesingsong/p/7957258.html
Copyright © 2011-2022 走看看