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");
    }

}

原文地址:https://www.cnblogs.com/yang21/p/9865399.html

时间: 2024-10-09 06:34:43

Spring Boot 5:应用程序启动时初始化资源的相关文章

Spring Boot 2.0(七):Spring Boot 如何解决项目启动时初始化资源

在我们实际工作中,总会遇到这样需求,在项目启动的时候需要做一些初始化的操作,比如初始化线程池,提前加载好加密证书等.今天就给大家介绍一个 Spring Boot 神器,专门帮助大家解决项目启动初始化资源操作. 这个神器就是 CommandLineRunner,CommandLineRunner 接口的 Component 会在所有 Spring Beans都初始化之后,SpringApplication.run()之前执行,非常适合在应用程序启动之初进行一些数据初始化的工作. 接下来我们就运用案

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

因项目集成了Redis缓存部分数据,需要在程序启动时将数据加载到Redis中,即初始化数据到Redis. 在SpringBoot项目下,即在容器初始化完毕后执行我们自己的初始化代码. 第一步:创建实现ApplicationListener接口的类 package com.stone; import com.stone.service.IPermissionService; import org.springframework.context.ApplicationListener; import

iOS 应用程序启动时要做什么

当您的应用程序启动(无论是在前台或后台),使用您的应用程序委托application:willFinishLaunchingWithOptions:和application:didFinishLaunchingWithOptions:方法来执行以下操作: 检查启动选项字典的内容,了解有关启动应用程序的原因,并做出相应的响应. 初始化您的应用程序的关键数据结构. 准备您的应用程序的窗口和视图以供显示: 在启动时,系统会自动加载您的应用程序的main Storyboard加载初始视图控制器. app

spring boot 源码解析 启动流程

spring boot 源码解析 启动流程 在面试过程中经常被问到过spring boot的启动流程,今天就翻一下源码整体看一下: 首先,新建一个启动类,可以看到是首先调用的SpringApplication的静态方法run @SpringBootApplication public class SourceReadApplillcation { public static void main(String[] args) { SpringApplication.run(SourceReadAp

java程序 启动时参数

iEMP34:/opt/version/lktest/b030/jre/jre_linux/bin # ./java -classpath . SysInfo Exception in thread "main" java.lang.NoClassDefFoundError: org/hyperic/sigar/SigarException at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.

Android应用程序启动时发生AndroidRuntime : ClassNotFoundException for Activity class的解决方法

在android应用程序启动时抛出下面异常导致启动失败:07-09 17:12:35.709: ERROR/AndroidRuntime(3866): Uncaught handler: thread main exiting due to uncaught exception 07-09 17:12:35.719: ERROR/AndroidRuntime(3866): java.lang.RuntimeException: Unable to instantiate activity Com

如何在ASP.NET Core程序启动时运行异步任务(2)

原文:Running async tasks on app startup in ASP.NET Core (Part 2) 作者:Andrew Lock 译者:Lamond Lu 在我的上一篇博客中,我介绍了如何在ASP.NET Core应用程序启动时运行一些一次性异步任务.本篇博客将继续讨论上一篇的内容,如果你还没有读过,我建议你先读一下前一篇. 在本篇博客中,我将展示上一篇博文中提出的"在Program.cs中手动运行异步任务"的实现方法.该实现会使用一些简单的接口和类来封装应用

Spring Boot 2.1.7 启动项目失败,报错: "Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured."

一开始按照网上的很多解决办法是: 启动类头部声明@SpringBootApplication(exclude= {DataSourceAutoConfiguration.class}),但是这样会排除掉我自己的数据库配置, 检查了很多地方都没发现问题在哪里,最后自己猜想不论怎么修改application.yml文件,都不生效,是不是因为这个配置文件就没有被加载到? 带着这个想法我就去网上搜了一下问题,有个问题看到了target目录的作用,就去想了一下是不是application.yml文件没有被

Spring Boot启动过程(四):Spring Boot内嵌Tomcat启动

之前在Spring Boot启动过程(二)提到过createEmbeddedServletContainer创建了内嵌的Servlet容器,我用的是默认的Tomcat. private void createEmbeddedServletContainer() { EmbeddedServletContainer localContainer = this.embeddedServletContainer; ServletContext localServletContext = getServ