在开发中可能会有这样的情景。需要在容器启动的时候执行一些内容。比如读取配置文件,数据库连接之类的。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
相关推荐
@SpringBootApplication public class CommandlineAppApplication implements ApplicationRunner { public static void main(String[] args) { SpringApplication.run(CommandlineAppApplication.class, args); }...
此外,SpringBoot还提供了ApplicationRunner和CommandLineRunner两个接口,用于在应用程序启动时执行特定的操作。ApplicationRunner接口用于执行应用程序启动时的操作,而CommandLineRunner接口用于执行命令行参数的...
在Java编程中,守护线程(Daemon Thread)是一种特殊的线程类型,它的主要作用是为应用程序提供后台服务,而不会阻止程序的退出。当所有的非守护线程(用户线程)结束时,JVM会自动关闭守护线程并退出。...
Springboot 框架提供了多种方式来实现应用程序启动和关闭时完成某些操作,其中包括使用 ApplicationListener 接口、CommandLineRunner 和 ApplicationRunner 等方式。 一、使用 ApplicationListener 接口 ...
- **运行器(Runner)**:SpringBoot提供`CommandLineRunner`和`ApplicationRunner`接口,允许在应用启动时执行代码。 2. **创建SpringBoot项目** 创建SpringBoot项目可以通过Spring Initializr在线生成,也可以...
首先,Spring Boot的启动类通常会继承自`org.springframework.boot.SpringApplication`的`SpringApplicationRunListener`或`CommandLineRunner`接口,并包含`@SpringBootApplication`注解。`@SpringBootApplication`...
可以实现`ApplicationRunner`或`CommandLineRunner`接口,这两个接口的`run`方法会在Spring Boot应用启动后执行。 【配置】 Spring Boot的核心配置文件有`application.properties`和`bootstrap.properties`,前者...
它实现了 `ApplicationRunner` 和 `CommandLineRunner` 接口,提供了应用程序启动的核心逻辑。 **1.1 SpringApplication构造器** 在 Spring Boot 应用启动时,首先会创建一个 `SpringApplication` 实例。构造器...
在主类中,添加`@SpringBootApplication`注解,这将标记该类为Spring Boot的启动入口。 为了创建API接口,我们需要在`DemoApplication`所在的包或者子包下创建一个新的Java类,例如`ApiController`。在这个类中,...
4. **集成SpringBoot**:使用SpringBoot的`CommandLineRunner`或者`ApplicationRunner`接口,在SpringBoot应用启动时启动Netty服务器。这样,当SpringBoot应用运行时,Netty服务器也会随之启动。 5. **配置...
可以创建一个新的Spring Boot应用作为"主"应用,它使用`@SpringBootApplication`注解,并通过Spring的`CommandLineRunner`接口来启动其他子应用。 6. **打包和运行** 运行`mvn package`或`gradle build`命令,会...
可以在主类中调用`startWatchingChanges()`方法,或者使用`CommandLineRunner`或`ApplicationRunner`接口: ```java @SpringBootApplication public class Application implements CommandLineRunner { @...
6. **运行器(Runner)**:如CommandLineRunner和ApplicationRunner接口,允许在应用启动后执行自定义代码。 7. **Spring Boot DevTools**:为开发者提供了实时重载、热部署、错误报告等功能,加速开发流程。 在...
6. **CommandLine Runner和Application Runner**: Spring Boot提供了`CommandLineRunner`和`ApplicationRunner`接口,可以在应用启动时执行自定义代码,通常用于初始化数据或执行一次性任务。 7. **Spring Boot CLI...
文档可能包括了创建第一个SpringBoot应用的步骤,这通常涉及创建一个主应用类,使用@SpringBootApplication注解来标识。这个注解会启动Spring的自动配置功能,它会根据你的类路径和依赖来配置应用。你还可以定义一个...
6. **运行器(Runner)**:SpringBoot提供CommandLineRunner和ApplicationRunner接口,用于在应用启动时执行自定义代码。 7. **外部配置**:SpringBoot支持通过环境变量、命令行参数、属性文件(application....
4. **运行器(Runner)**:如CommandLineRunner和ApplicationRunner接口,它们允许你在应用启动时执行代码。 5. **无XML配置**:SpringBoot鼓励使用Java配置,而不是XML,使得配置更直观且易于测试。 6. **健康...
5. ** CommandLine Runner 和 Application Runner**:这两个接口允许在应用启动时执行自定义代码,常用于初始化任务或者数据加载。 回到这个简洁型后台框架,`AFireProject`可能是项目的名字,可能包含以下组件或...