首页 > 其他分享 >【Springboot】项目启动后执行特定方法

【Springboot】项目启动后执行特定方法

时间:2022-08-17 20:57:06浏览次数:74  
标签:INFO CommandLineRunner 20 Springboot 17 启动 08 特定 ApplicationRunner

Springboot项目启动后执行特定方法

Springboot给我们提供了两种“开机启动”方式:ApplicationRunner和CommandLineRunner。
这两种方法提供的目的是为了满足,在项目启动的时候立刻执行某些方法。我们可以通过实现ApplicationRunner和CommandLineRunner,来实现,他们都是在SpringApplication 执行之后开始执行的。
CommandLineRunner接口可以用来接收字符串数组的命令行参数,ApplicationRunner 是使用ApplicationArguments 用来接收参数的

使用ApplicationRunner

/**
 * 项目启动执行 ApplicationRunner
 */
@Component
public class MyApplicationRunner implements ApplicationRunner {

    private static Logger log = LoggerFactory.getLogger(MyCommandLineRunner.class);

    @Override
    public void run(ApplicationArguments var1) throws Exception{
        log.info(" ApplicationRunner 项目启动,开始执行...");

    }
}

使用 CommandLineRunner

/**
 * 项目启动执行 CommandLineRunner
 */
@Component
public class MyCommandLineRunner  implements CommandLineRunner {

    private static Logger log = LoggerFactory.getLogger(MyCommandLineRunner.class);
    @Override
    public void run(String... var1) throws Exception {
        log.info(" CommandLineRunner 项目启动,开始执行...");
    }
}

项目启动测试

2022-08-17 20:25:07.723  INFO 13704 --- [  restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8089 (https) with context path '/gc'
2022-08-17 20:25:07.763  INFO 13704 --- [  restartedMain] com.chat.gc.GcChatWebrtcApplication      : Started GcChatWebrtcApplication in 3.862 seconds (JVM running for 152.095)
2022-08-17 20:25:07.765  INFO 13704 --- [  restartedMain] com.chat.gc.config.MyCommandLineRunner   :  ApplicationRunner 项目启动,开始执行...
2022-08-17 20:25:07.765  INFO 13704 --- [  restartedMain] com.chat.gc.config.MyCommandLineRunner   :  CommandLineRunner 项目启动,开始执行...
2022-08-17 20:25:07.901  INFO 13704 --- [  restartedMain] .ConditionEvaluationDeltaLoggingListener : Condition evaluation unchanged

指定启动方法执行的顺序

如果想要指定启动方法执行的顺序,可以通过实现org.springframework.core.Ordered接口或者使用org.springframework.core.annotation.Order注解来实现。
以ApplicationRunner 为例来分别实现

Ordered接口:

    /**
 * 项目启动执行 ApplicationRunner
 */
@Component
public class MyApplicationRunner implements ApplicationRunner, Ordered {

    private static Logger log = LoggerFactory.getLogger(MyCommandLineRunner.class);

    @Override
    public void run(ApplicationArguments var1) throws Exception{
        log.info(" ApplicationRunner 项目启动,开始执行...");
    }

    @Override
    public int getOrder() {
        return 1;
    }
}

项目启动测试

2022-08-17 20:30:24.063  INFO 7460 --- [  restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8089 (https) with context path '/gc'
2022-08-17 20:30:24.069  INFO 7460 --- [  restartedMain] com.chat.gc.GcChatWebrtcApplication      : Started GcChatWebrtcApplication in 15.202 seconds (JVM running for 20.388)
2022-08-17 20:30:24.071  INFO 7460 --- [  restartedMain] com.chat.gc.config.MyCommandLineRunner   :  ApplicationRunner 项目启动,开始执行...
2022-08-17 20:30:24.071  INFO 7460 --- [  restartedMain] com.chat.gc.config.MyCommandLineRunner   :  CommandLineRunner 项目启动,开始执行...

Order注解实现方式:

/**
 * 项目启动执行 CommandLineRunner
 */
@Order(value = 2)
@Component
public class MyCommandLineRunner  implements CommandLineRunner {

    private static Logger log = LoggerFactory.getLogger(MyCommandLineRunner.class);
    @Override
    public void run(String... var1) throws Exception {
        log.info(" CommandLineRunner 项目启动,开始执行...");
    }

}

项目启动测试

2022-08-17 20:41:36.148  INFO 696 --- [  restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8089 (https) with context path '/gc'
2022-08-17 20:41:36.156  INFO 696 --- [  restartedMain] com.chat.gc.GcChatWebrtcApplication      : Started GcChatWebrtcApplication in 18.13 seconds (JVM running for 22.356)
2022-08-17 20:41:36.159  INFO 696 --- [  restartedMain] com.chat.gc.config.MyCommandLineRunner   :  ApplicationRunner 项目启动,开始执行...
2022-08-17 20:41:36.160  INFO 696 --- [  restartedMain] com.chat.gc.config.MyCommandLineRunner   :  CommandLineRunner 项目启动,开始执行...

参考:https://www.cnblogs.com/cnsyear/p/12732168.html

标签:INFO,CommandLineRunner,20,Springboot,17,启动,08,特定,ApplicationRunner
From: https://www.cnblogs.com/HelloWxl/p/16596691.html

相关文章

  • java 启动设置jar包 命令设置参数说摸信息
    nohupjava-jar -Dspring.profiles.active=test -Xms512M-Xmx2048M-XX:PermSize=512M-XX:MaxPermSize=1024M /data/home/app/XXX.jar>/dev/null2>&1&说明:Xms......
  • VSCode中Java项目启动设置JVM栈参数。
    发生缘由学习JVM中栈溢出,因此需要启动项目的时候修改一下JVM栈的参数。环境介绍电脑系统:win10jdk:1.8.0_144JVM:JavaHotSpot(TM)64-BitServerVM(build2......
  • 【InventWithPython 第一部分】校对活动正式启动
    仓库:https://github.com/apachecn/invent-with-python-zh整体进度:https://github.com/apachecn/invent-with-python-zh/issues/1贡献指南:https://github.com/apachecn/in......
  • SpringBoot 多线程
    关于SpringBoot中多线程的两个注解:@Async是spring为了方便开发人员进行异步调用而出现的。在方法上加入这个注解,spring会从线程池中获取一个新的线程来执行方法,实现异步调......
  • SpringBoot使用Log4J2
    一、常用日志框架Log4j:Apache的一个开源项目,可以控制日志信息输送的目的地是控制台、文件、GUI组件等,可以控制每一条日志的输出格式,这些可以通过一个配置文件来灵活地进......
  • 全局异常处理及参数校验-SpringBoot 2.7 实战基础 (建议收藏)
    优雅哥SpringBoot2.7实战基础-08-全局异常处理及参数校验前后端分离开发非常普遍,后端处理业务,为前端提供接口。服务中总会出现很多运行时异常和业务异常,本文主要讲......
  • springboot~用正则表达式提取bearer token
    前后一体的应用,是这样进行认证的用户向服务端发送验证信息(用户名、密码);服务端验证成功就向用户返回一个sessionid;服务端保存了这个session_id对应的信息,并写入用户......
  • War包加载过慢导致JBoss 6.4无法正常启动
    ​上周应用维护人员上线时,反馈应用无法启动,半夜被叫起来让帮忙排查一下原因。Jboss使用的是eap6.4的版本,登录后,发现应用启动时间超过300S时,jboss认为启动失败。​编辑......
  • spring boot项目-官网拉下来启动失败
      造成原因:  解决方法:改为    重新启动成功!......
  • 获取字符串中倒数第二个特定字符的位置
    开发场景中,有时候会遇到取文件路径中的文件夹名称,这些文件路径往往是http格式的,比如下面这样:https://img2020.cnblogs.com/blog/2413255/202112/2413255-20211206155717......