zoukankan      html  css  js  c++  java
  • Spring Boot 5:应用程序启动时初始化资源

    需求:应用程序启动后,初始化基础数据、加密证书等操作。

    可以使用CommandLineRunner接口来实现,在SpringBoot.run()之后完成资源的初始化工作。

    注意:多个Runner需要顺序启动的话,可以使用@Order注解

    package sun.flower.diver.modules.system.init;
    
    import org.springframework.boot.CommandLineRunner;
    import org.springframework.core.annotation.Order;
    import org.springframework.stereotype.Component;
    
    /**
     * 应用程序启动后加载基础数据 Runner
     *
     * @Author YangXuyue
     * @Date 2018/10/28 13:48
     */
    @Component
    @Order(1)
    public class BaseDataRunner implements CommandLineRunner {
        @Override
        public void run(String... strings) throws Exception {
            System.out.println("start init base data");
        }
    }
    package sun.flower.diver.modules.system.init;
    
    import org.springframework.boot.CommandLineRunner;
    import org.springframework.core.annotation.Order;
    import org.springframework.stereotype.Component;
    
    /**
     * 应用程序启动后加载证书 Runner
     *
     * @Author YangXuyue
     * @Date 2018/10/28 13:50
     */
    @Component
    @Order(2)
    public class CertificateRunner implements CommandLineRunner {
        @Override
        public void run(String... strings) throws Exception {
            System.out.println("start init certificate info");
        }
    }
    package sun.flower.diver;
    
    import org.springframework.boot.Banner;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
    
    @SpringBootApplication
    // 添加注解 @EnableDiscoveryClient,只有这样,服务注册、心跳检测相关配置信息才能被自动加载
    @EnableDiscoveryClient
    public class DiverApplication {
    
        public static void main(String[] args) {
            System.out.println("application start");
    
            SpringApplication application = new SpringApplication(DiverApplication.class);
            // 添加监听器,此时监听器类不需要标注是一个Bean
            //application.addListeners(new BaseListener());
            application.setBannerMode(Banner.Mode.OFF);
            application.run(args);
    
            System.out.println("application started");
        }
    
    }

  • 相关阅读:
    Add Two Numbers
    Remove Duplicates from Sorted List II
    Reorder List
    Divide Two Integers
    Reverse Nodes in k-Group
    链表反转
    模板类 error LNK2019: 无法解析的外部符号
    传参数应该用哪种形式——值、引用、指针?
    OpenMesh 将默认的 float 类型改为 double 类型
    fatal error LNK1169: 找到一个或多个多重定义的符号
  • 原文地址:https://www.cnblogs.com/yang21/p/9865399.html
Copyright © 2011-2022 走看看