【SpringBoot】19、SpringBoot中实现启动任务

【SpringBoot】19、SpringBoot中实现启动任务我们在项目中会用到项目启动任务,即项目在启动的时候需要做的一些事,例如:数据初始化、获取第三方数据等等,那么如何在SpringBoot中实现启动任务,一起来看看吧SpringBoot中提供了两种项目启动方案,CommandLineRunner和ApplicationRunner一、CommandLineRunner使用CommandLineRunner,需要自定义一个类区实现CommandLineRunner接口,例如:importorg.springframework.boot.

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

我们在项目中会用到项目启动任务,即项目在启动的时候需要做的一些事,例如:数据初始化、获取第三方数据等等,那么如何在SpringBoot 中实现启动任务,一起来看看吧

SpringBoot 中提供了两种项目启动方案,CommandLineRunner 和 ApplicationRunner

一、CommandLineRunner

使用 CommandLineRunner ,需要自定义一个类区实现 CommandLineRunner 接口,例如:

import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

/** * 项目启动任务类 */
@Component
@Order(100)
public class StartTask implements CommandLineRunner { 
   

    @Override
    public void run(String... args) throws Exception { 
   

    }
}

我们首先使用 @Component 将该类注册成为 Spring 容器中的一个 Bean
然后使用 @Order(100) 标明该启动任务的优先级,值越大,表示优先级越小
实现 CommandLineRunner 接口,并重写 run() 方法,当项目启动时,run() 方法会被执行,run() 方法中的参数有两种传递方式
1、在 IDEA 中传入参数传入参数
2、将项目打包,在启动项目时,输入以下命令:

java -jar demo-0.0.1-SNAPSHOT.jar hello world

二、ApplicationRunner

ApplicationRunner 与 CommandLineRunner 的用法基本一致,只是接收的参数不一样,可以接收 key-value 形式的参数,如下:

import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

/** * 项目启动任务类 */
@Component
@Order(100)
public class StartTask implements ApplicationRunner { 
   

    @Override
    public void run(ApplicationArguments args) throws Exception { 
   

    }
}

关于 run 方法的参数 ApplicationArguments:

1、args.getNonOptionArgs();可以用来获取命令行中的无key参数(和CommandLineRunner一样)
2、args.getOptionNames();可以用来获取所有key/value形式的参数的key
3、args.getOptionValues(key));可以根据key获取key/value 形式的参数的value
4、args.getSourceArgs(); 则表示获取命令行中的所有参数

传参方式:
1、在 IDEA 中传入参数传入参数
2、将项目打包,在启动项目时,输入以下命令:

java -jar demo-0.0.1-SNAPSHOT.jar hello world --name=xiaoming

以上就是在 SpringBoot 中实现项目启动任务的两种方式,用法基本一致,主要体现在传参的不同上

如您在阅读中发现不足,欢迎留言!!!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/189404.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 详解 & 0xff 的作用

    详解 & 0xff 的作用首先我们要都知道,&表示按位与,只有两个位同时为1,才能得到1,0x代表16进制数,0xff表示的数二进制11111111占一个字节.和其进行&操作的数,最低8位,不会发生变化.下面着重来说说&0xff都有哪些应用:1.只是为了取得低八位通常配合移位操作符>>使用例如:javasocket通信中基于长度的成帧方法中,如果发送的信息长度小于65…

    2022年6月19日
    45
  • getinstance用法作用(rept函数怎么用)

    阅读数:275先举例说明:下面是一个例子,为什么要把这个类实例化?有什么好处?//实例化publicstaticDBConnectinstance;publicstaticDBConnectgetInstance(){if(instance==null){instance=newDBconnect();}returninstance;…

    2022年4月14日
    40
  • window location href页面跳转的几种用法及其延展「建议收藏」

    window location href页面跳转的几种用法及其延展「建议收藏」一、location.href常见的几种形式self.location.href;//当前页面打开URL页面 window.location.href;//当前页面打开URL页面 this.location.href;//当前页面打开URL页面 location.href;//当前页面打开URL页面 parent.location.href;//在父页面打开新页面 top.loca…

    2022年7月12日
    30
  • Vue(2)计数器的实现「建议收藏」

    Vue(2)计数器的实现「建议收藏」计数器的实现在页面上简单实现一个计数器<!DOCTYPEhtml><htmllang="en"><head><metach

    2022年7月29日
    5
  • 软件设计之——“高内聚低耦合”

    软件设计之——“高内聚低耦合”

    2021年10月10日
    96
  • accept text/html,Accept_标题 | Headers_HTTP_参考手册_非常教程

    accept text/html,Accept_标题 | Headers_HTTP_参考手册_非常教程AcceptAccept请求的HTTP标头通告了内容类型,并表示为MIME类型,客户端是能够理解的。使用内容协商,服务器然后选择其中一个提议,使用它并通过Content-Type响应头通知客户它的选择。浏览器根据请求完成的上下文为此标头设置足够的值:在获取CSS样式表时,为请求设置的值与获取图像,视频或脚本时的值不同。HeadertypeRequestheaderForbidden…

    2022年7月26日
    12

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号