关于CommandLineRunner的使用详解

 更新时间:2024年12月10日 10:01:10   作者:LBL_lin  
本文介绍了如何在SpringBoot项目启动时使用CommandLineRunner和ApplicationRunner接口进行数据预加载或操作,通过实现这两个接口,可以在项目启动时执行特定的任务,同时,还展示了如何使用@Order注解来控制多个实现类的加载顺序

背景

在项目启动时需要做一些数据预加载或者某些操作,需要怎么办呢,方法其实有好几种,这里主要讲一下SpringBoot提供的CommandLineRunner接口的使用。

案例说明以及实现

1.实现CommandLineRunner接口

  • 定义一个类实现CommandLineRunner接口,模拟启动项目时的预加载处理。
package com.lbl.run;

import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

@Slf4j
@Component
public class WebStart implements CommandLineRunner {

    @Override
    public void run(String... args) throws Exception {
        log.info("------------- WebStart ---------------");
    }
}
  • 启动类
package com.lbl;

import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@Slf4j
@SpringBootApplication
public class SpringbootDemoApplication {

    public static void main(String[] args) {
        log.info("------------- before ---------------");
        SpringApplication.run(SpringbootDemoApplication.class, args);
        log.info("------------- after ---------------");
    }

}
  • 启动启动类,查看日志的打印

2.加载的顺序

  • 如果有多个实现类,我们可以使用@Order()注解控制它们的加载顺序,数字越小加载越早。
  • 现在创建多一个CommandLineRunnerd的实现类,给它们加上@Order()注解。
package com.lbl.run;

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 WebStart implements CommandLineRunner {

    @Override
    public void run(String... args) throws Exception {
        log.info("------------- WebStart ---------------");
    }
}
package com.lbl.run;

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 WebStart2 implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        log.info("------------- WebStart2 ---------------");
    }
}
  • 启动启动类,查看日志的打印

3.扩展-ApplicationRunner

  • 除了实现CommandLineRunner接口可以完成项目启动时的预加载动作,还有ApplicationRunner也能实现同样的功能,并且在不设置@Order()的情况下,ApplicationRunner的优先级大于CommandLineRunner。
package com.lbl.run;

import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;

@Slf4j
@Component
public class WebStart3 implements ApplicationRunner {

    @Override
    public void run(ApplicationArguments args) throws Exception {
        log.info("------------- WebStart3 ---------------");
    }
}

此时注掉前面两个实现类的@Order()注解

  • 启动实现类,查看日志的打印

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • java数据库批量插入数据的实现

    java数据库批量插入数据的实现

    本文主要介绍了java数据库批量插入数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-05-05
  • Java超详细讲解类的继承

    Java超详细讲解类的继承

    继承就是可以直接使用前辈的属性和方法。自然界如果没有继承,那一切都是处于混沌状态。多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作
    2022-04-04
  • Springbootadmin与security冲突问题及解决

    Springbootadmin与security冲突问题及解决

    这篇文章主要介绍了Springbootadmin与security冲突问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • 浅谈Mybatis乐观锁插件

    浅谈Mybatis乐观锁插件

    这篇文章主要介绍了浅谈Mybatis乐观锁插件,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • Java实现汉字转全拼音的方法总结

    Java实现汉字转全拼音的方法总结

    在软件开发中,经常会遇到需要将汉字转换成拼音的场景,比如在搜索引擎优化、数据存储、国际化等方面,Java作为一种广泛使用的编程语言,提供了多种方法来实现汉字到拼音的转换,本文将详细介绍几种常用的Java汉字转全拼音的方法,并提供具体的代码示例和步骤
    2024-12-12
  • Java获取本机IP地址的方法代码示例(内网、公网)

    Java获取本机IP地址的方法代码示例(内网、公网)

    在IT领域获取本机IP地址是一项基础但重要的任务,特别是在网络编程、远程协作和设备通信中,这篇文章主要给大家介绍了关于Java获取本机IP地址的方法(内网、公网),需要的朋友可以参考下
    2024-07-07
  • 解析SpringBoot整合SpringDataRedis的过程

    解析SpringBoot整合SpringDataRedis的过程

    这篇文章主要介绍了SpringBoot整合SpringDataRedis的过程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • Jpa使用Page和Pageable分页遇到的问题及解决

    Jpa使用Page和Pageable分页遇到的问题及解决

    这篇文章主要介绍了Jpa使用Page和Pageable分页遇到的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • Spring IOC容器使用详细讲解

    Spring IOC容器使用详细讲解

    IOC-Inversion of Control,即控制反转。它不是什么技术,而是一种设计思想。这篇文章将为大家介绍一下Spring控制反转IOC的原理,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-12-12
  • 什么是jsoup及jsoup的使用

    什么是jsoup及jsoup的使用

    jsoup是一款基于Java的HTML解析器,它提供了一套非常省力的API,不但能直接解析某个URL地址、HTML文本内容,而且还能通过类似于DOM、CSS或者jQuery的方法来操作数据,所以 jsoup 也可以被当做爬虫工具使用,这篇文章主要介绍了什么是jsoup及jsoup的使用,需要的朋友可以参考下
    2023-10-10

最新评论