【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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • loadworkbook Python_load with

    loadworkbook Python_load withPython——load_workbook用法功能方法示例文件模块读取功能读取excel文件,并进行操作方法示例文件模块读取fromopenpyxlimportload_workbookwb=load_workbook(“电信成绩单.xlsx”)wb'<openpyxl.workbook.workbook.Workbookat0x1ad7ad45ac8>’ws=wb.activews<Worksheet”电子信息2班”>…

    2025年6月18日
    2
  • mysql中如何修改表的名字?修改表名?

    mysql中如何修改表的名字?修改表名?mysql>createtablets01liketi_o_sms;#创建表结构.这样的建表方式,不仅仅是表的结构,连带着索引也会同时创建.QueryOK,0rowsaffected(0.02sec)mysql>altertablets01renametots01_new;#修改表名的语法:altertablerenameto/asnew_tablename;QueryOK,0rowsaffected(0.00s.

    2022年5月31日
    60
  • java渗透测试框架_java编程

    java渗透测试框架_java编程(7)sqlmap(python脚本学习下)经典sql注入工具(这种针对参数的工具,不知道是不是扫描方式有问题,还是怎么着,怎么才能抓几个包,或者把常用点的包抓出来)抓几个sqlmap的包sqlmap功能很强大,这里就抓了一个结合burpsuitePOSTsqlmap的包(也可以用Burpsuitesqlmap插件http://www.freebuf.com/tools/6426.html)命令:…

    2022年8月12日
    5
  • idea2021的激活码【在线注册码/序列号/破解码】

    idea2021的激活码【在线注册码/序列号/破解码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日
    68
  • Ubuntu12.04 LAMP 基本配置

    Ubuntu12.04 LAMP 基本配置

    2021年8月19日
    60
  • 卷王指南,大学计算机专业,面临分专业,计科,软工,大数据,物联网,网络工程,该选什么?

    卷王指南,大学计算机专业,面临分专业,计科,软工,大数据,物联网,网络工程,该选什么?同学们好,我是王老师——二哥呀!(笑喷)好巧!前几天有同学私信问过我这个问题:大学计算机专业,面临分专业,计科,软工,大数据,物联网,网络工程,该选什么?再加上高考结束后填报志愿,想必CSDN上有很多同学挺迷茫的。我就来(主观地)一一分析下,从后往前。网络工程,听起来还算是蛮高端大气上档次的,大家可以去百度百科或者维基百科看一下这个专业的解释。我的理解是网络工程是将计算机以及其他设备串联完成网络通信,以及智能化监控的学科。主要的分支有:路由交换、网络安全、无线网络等等。我之前在的一个公司(十年

    2022年6月9日
    44

发表回复

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

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