`
y806839048
  • 浏览: 1126335 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

SpringBoot的ApplicationRunner

阅读更多

在开发中可能会有这样的情景。需要在容器启动的时候执行一些内容。比如读取配置文件,数据库连接之类的。SpringBoot给我们提供了两个接口来帮助我们实现这种需求。这两个接口分别为CommandLineRunner和ApplicationRunner。他们的执行时机为容器启动完成的时候---此时需要的bean都已经具备

 

这两个接口中有一个run方法,我们只需要实现这个方法即可。这两个接口的不同之处在于:ApplicationRunner中run方法的参数为ApplicationArguments,而CommandLineRunner接口中run方法的参数为String数组。目前我在项目中用的是ApplicationRunner。是这么实现的:

 

 

 

/*
 * <<
 *  Davinci
 *  ==
 *  Copyright (C) 2016 - 2019 EDP
 *  ==
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *        http://www.apache.org/licenses/LICENSE-2.0
 *   Unless required by applicable law or agreed to in writing, software
 *   distributed under the License is distributed on an "AS IS" BASIS,
 *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *   See the License for the specific language governing permissions and
 *   limitations under the License.
 *  >>
 *
 */

package edp.davinci.runner;

import edp.core.utils.CustomDataSourceUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.context.ApplicationContext;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

@Order(1)
@Component
@Slf4j
public class CustomDataSourceRunner implements ApplicationRunner {

    @Value("${custom-datasource-driver-path}")
    private String dataSourceYamlPath;

@Autowired
private ApplicationContext applicationContext;

@Override
public void run(ApplicationArguments args) {
        try {
            CustomDataSourceUtils.loadAllFromYaml(dataSourceYamlPath);
} catch (Exception e) {
            log.error("{}", e.getMessage());
SpringApplication.exit(applicationContext);
log.info("Server shutdown");
}
        log.info("Load custom datasource finish");
}
}

 

 

 

参考:https://blog.csdn.net/jdd92/article/details/81053404

分享到:
评论

相关推荐

    如何使用Spring Boot ApplicationRunner解析命令行中的参数

    @SpringBootApplication public class CommandlineAppApplication implements ApplicationRunner { public static void main(String[] args) { SpringApplication.run(CommandlineAppApplication.class, args); }...

    SpringBoot Application事件监听的实现方案

    此外,SpringBoot还提供了ApplicationRunner和CommandLineRunner两个接口,用于在应用程序启动时执行特定的操作。ApplicationRunner接口用于执行应用程序启动时的操作,而CommandLineRunner接口用于执行命令行参数的...

    守护线程系统-含源码

    在Java编程中,守护线程(Daemon Thread)是一种特殊的线程类型,它的主要作用是为应用程序提供后台服务,而不会阻止程序的退出。当所有的非守护线程(用户线程)结束时,JVM会自动关闭守护线程并退出。...

    详解Springboot应用启动以及关闭时完成某些操作

    Springboot 框架提供了多种方式来实现应用程序启动和关闭时完成某些操作,其中包括使用 ApplicationListener 接口、CommandLineRunner 和 ApplicationRunner 等方式。 一、使用 ApplicationListener 接口 ...

    springboot

    - **运行器(Runner)**:SpringBoot提供`CommandLineRunner`和`ApplicationRunner`接口,允许在应用启动时执行代码。 2. **创建SpringBoot项目** 创建SpringBoot项目可以通过Spring Initializr在线生成,也可以...

    Springboot-项目启动找不到启动类

    首先,Spring Boot的启动类通常会继承自`org.springframework.boot.SpringApplication`的`SpringApplicationRunListener`或`CommandLineRunner`接口,并包含`@SpringBootApplication`注解。`@SpringBootApplication`...

    SpringBoot.docx

    可以实现`ApplicationRunner`或`CommandLineRunner`接口,这两个接口的`run`方法会在Spring Boot应用启动后执行。 【配置】 Spring Boot的核心配置文件有`application.properties`和`bootstrap.properties`,前者...

    某果学院springboot 源码解析

    它实现了 `ApplicationRunner` 和 `CommandLineRunner` 接口,提供了应用程序启动的核心逻辑。 **1.1 SpringApplication构造器** 在 Spring Boot 应用启动时,首先会创建一个 `SpringApplication` 实例。构造器...

    SpringBoot创建第一个API接口

    在主类中,添加`@SpringBootApplication`注解,这将标记该类为Spring Boot的启动入口。 为了创建API接口,我们需要在`DemoApplication`所在的包或者子包下创建一个新的Java类,例如`ApiController`。在这个类中,...

    springboot与netty整合

    4. **集成SpringBoot**:使用SpringBoot的`CommandLineRunner`或者`ApplicationRunner`接口,在SpringBoot应用启动时启动Netty服务器。这样,当SpringBoot应用运行时,Netty服务器也会随之启动。 5. **配置...

    springboot 多项目打包 jar包教程,包含源代码

    可以创建一个新的Spring Boot应用作为"主"应用,它使用`@SpringBootApplication`注解,并通过Spring的`CommandLineRunner`接口来启动其他子应用。 6. **打包和运行** 运行`mvn package`或`gradle build`命令,会...

    springboot整合mongodb changestream代码

    可以在主类中调用`startWatchingChanges()`方法,或者使用`CommandLineRunner`或`ApplicationRunner`接口: ```java @SpringBootApplication public class Application implements CommandLineRunner { @...

    SpringBoot-Study--master.zip

    6. **运行器(Runner)**:如CommandLineRunner和ApplicationRunner接口,允许在应用启动后执行自定义代码。 7. **Spring Boot DevTools**:为开发者提供了实时重载、热部署、错误报告等功能,加速开发流程。 在...

    01-SpringBoot-Demo

    6. **CommandLine Runner和Application Runner**: Spring Boot提供了`CommandLineRunner`和`ApplicationRunner`接口,可以在应用启动时执行自定义代码,通常用于初始化数据或执行一次性任务。 7. **Spring Boot CLI...

    自学SpringBoot--入门文档

    文档可能包括了创建第一个SpringBoot应用的步骤,这通常涉及创建一个主应用类,使用@SpringBootApplication注解来标识。这个注解会启动Spring的自动配置功能,它会根据你的类路径和依赖来配置应用。你还可以定义一个...

    第一个springboot程序

    6. **运行器(Runner)**:SpringBoot提供CommandLineRunner和ApplicationRunner接口,用于在应用启动时执行自定义代码。 7. **外部配置**:SpringBoot支持通过环境变量、命令行参数、属性文件(application....

    springboot中文api.zip

    4. **运行器(Runner)**:如CommandLineRunner和ApplicationRunner接口,它们允许你在应用启动时执行代码。 5. **无XML配置**:SpringBoot鼓励使用Java配置,而不是XML,使得配置更直观且易于测试。 6. **健康...

    springboot简洁型后台框架

    5. ** CommandLine Runner 和 Application Runner**:这两个接口允许在应用启动时执行自定义代码,常用于初始化任务或者数据加载。 回到这个简洁型后台框架,`AFireProject`可能是项目的名字,可能包含以下组件或...

Global site tag (gtag.js) - Google Analytics