CommandLineRunner和ApplicationRunner

2024-08-24 23:20

本文主要是介绍CommandLineRunner和ApplicationRunner,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 前言
  • 一、两者的区别
  • 二、CommandLineRunner接口示例
  • 三、ApplicationRunner接口示例


前言

在 Spring Boot 中,ApplicationRunner 和 CommandLineRunner 接口可以在应用启动后执行一些初始化操作或者运行一些脚本。
若想在项目启动之后立即执行某一段代码,就可以实现ApplicationRunner或 CommandLineRunner接口,相应的代码写在重写的run()方法中。

下面是这两种接口的基本介绍及其使用场景。

一、两者的区别

ApplicationRunner:
是 Spring Boot 提供的一个接口。
可以通过 Bean 的依赖注入来访问 Spring 容器中的其他 Bean。
更适合于需要访问 Spring 上下文中其他 Bean 的场景。

CommandLineRunner:
同样是 Spring Boot 提供的一个接口。
没有直接的依赖注入支持,但是可以通过构造方法注入所需的 Bean。
更适合于简单的命令行参数处理或执行一些不需要访问 Spring 上下文的简单任务。

二、CommandLineRunner接口示例

代码如下:

import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;@Slf4j
@Component
public class CommandLineRunnerTest implements CommandLineRunner {@Overridepublic void run(String... args) {log.info("-----------CommandLineRunnerTest启动-----------");// TODO 此处可以进行相关业务处理}
}

当有多个CommandLineRunner继承类时,为了使他们按一定顺序执行,可以使用 @Order 注解或实现 Ordered 接口。

import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;@Slf4j
@Component
@Order(1)
public class CommandLineRunnerTest01 implements CommandLineRunner {@Overridepublic void run(String... args) {log.info("-----------CommandLineRunnerTest01启动-----------");// TODO 此处可以进行相关业务处理}
}
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;@Slf4j
@Component
@Order(2)
public class CommandLineRunnerTest02 implements CommandLineRunner {@Overridepublic void run(String... args) {log.info("-----------CommandLineRunnerTest02启动-----------");}
}

以上代码中会先执行@Order(1)的实现类。

三、ApplicationRunner接口示例

代码如下:

@Slf4j
@Component
public class ApplicationRunnerTest implements ApplicationRunner {@Overridepublic void run(ApplicationArguments args) throws Exception {log.info("-----------ApplicationRunnerTest启动-----------");// TODO 此处可以进行相关业务处理}
}

这篇关于CommandLineRunner和ApplicationRunner的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1103898

相关文章

SpringBoot日常:扩展接口之CommandLineRunner和ApplicationRunner

文章目录 简介springboot启动容器过程应用场景如何控制执行顺序ApplicationRunner和CommandLineRunner区别代码示例运行示例 简介 日常开发中我们可能经常会遇到这样的场景,像启动容器完成后需要去执行一些业务逻辑,SpringBoot给我们提供了两个接口来帮助我们实现这种需求,两个启动加载接口分别是CommandLineRunner和Appl

SpringBoot基础篇(三)ApplicationContextAware和CommandLineRunner接口

1.ApplicationContextAware接口         ApplicationContext对象是Spring开源框架的上下文对象实例,在项目运行时自动装载Handler内的所有信息到内存。基于SpringBoot平台完成ApplicationContext对象的获取,并通过实例手动获取Spring管理的bean。 ApplicationContextAware接口的方式获取A

项目实践缓存预热方案之CommandLineRunner和ApplicationRunner

众所周知,在项目的开发中,合理使用缓存是提高服务性能的一大利器,本篇文章就来介绍一下我所在项目中如何使用缓存的一个案例。 背景 我们的项目是由多个微服务所组成,业务是保险,我所负责的模块是出单,在压测的过程中,发现当所有服务启动好之后,第一次出单的时间存在耗时较长的情况,通过sleuth分析了一下各个服务之间的调用链,针对第一单,发现出单接口中存在调用其他接口做查询和逻辑处理,在第一次调用后会

CommandLineRunner和ApplicationRunner作用及区别——SpringBoot

目录   一、需求与前言 二、接口的使用 2.1、ApplicationRunner接口使用 2.2、CommandLineRunner接口使用 三、区别 3.1、两个接口的实现方法一样,参数不一样,其他没什么区别。两个参数都可以接收java命令设置的参数及值,如下3.1.1截图。 3.2、ApplicationRunner接口的实现方法比CommandLineRunner接口的实

CommandLineRunner实现项目启动时预处理

如果希望在SpringBoot应用启动时进行一些初始化操作可以选择使用CommandLineRunner来进行处理。 我们只需要实现CommandLineRunner接口,并且把对应的bean注入容器。把相关初始化的代码重新到需要重新的方法中。 这样就会在应用启动的时候执行对应的代码。 @Componentpublic class TestRunner implements Command

CommandLineRunner解释学习

目录 一、CommandLineRunner介绍 1.1 接口定义 1.2 工作原理 二、CommandLineRunner作用 三、CommandLineRunner使用方式 3.1 实现CommandLineRunner 3.2 配置Spring Boot项目 四、完整代码地址 小剧场:坚持不懈! 一、CommandLineRunner介绍 CommandLine

Spring-boot中ApplicationRunner源码

ApplicationRunner源码 public interface ApplicationRunner {void run(ApplicationArguments var1) throws Exception;} ApplicationArguments源码 public interface ApplicationArguments {String[] get

CommandLineRunner的使用

背景 在项目启动时需要做一些数据预加载或者某些操作,需要怎么办呢,方法其实有好几种,这里主要讲一下SpringBoot提供的CommandLineRunner接口的使用。 一、案例说明以及实现 1.实现CommandLineRunner接口 定义一个类实现CommandLineRunner接口,模拟启动项目时的预加载处理。 package com.lbl.run;import lomb

【java学习】Spring MVC(Model View Controller)、ApplicationRunner

1,概念 SpringMVC: Spring推出的基于Servlet标准的MVC框架实现 1)Spring MVC特性 Spring MVC提供了一种绑定机制(请求参数名称与Java类的属性相匹配即可),通过该机制可以从用户请求中提取数据,然后将数据转换为预定义的数据格式,最后映射到一个模型类,从而创建一个对象。Spring MVC还是非侵入式的,因为业务逻辑代码与框架本身是分离的。

ApplicationRunner 类

优质博文:IT-BLOG-CN 在开发中可能会有这样的情景。需要在容器启动的时候执行一些内容。比如读取配置文件,数据库连接之类的。SpringBoot给我们提供了两个接口来帮助我们实现这种需求。这两个接口分别为CommandLineRunner和ApplicationRunner。他们的执行时机为容器启动完成的时候。 这两个接口中有一个run方法,我们只需要实现这个方法即可。这两个接口的不同之