zoukankan      html  css  js  c++  java
  • springboot启动时执行任务CommandLineRunner

    转载:https://www.cnblogs.com/myblogs-miller/p/9046425.html

    # SpringBoot中CommandLineRunner的作用
    > 平常开发中有可能需要实现在项目启动后执行的功能,SpringBoot提供的一种简单的实现方案就是添加一个model并实现CommandLineRunner接口,实现功能的代码放在实现的run方法中
    # 简单例子

    package org.springboot.sample.runner;
    import org.springframework.boot.CommandLineRunner;
    import org.springframework.stereotype.Component;
    
    @Component
    public class MyStartupRunner implements CommandLineRunner {
    
    @Override
    public void run(String... args) throws Exception {
    System.out.println(">>>>>>>>>>>>>>>服务启动执行,执行加载数据等操作<<<<<<<<<<<<<");
    }
    
    }

    # 如果有多个类实现CommandLineRunner接口,如何保证顺序
    > SpringBoot在项目启动后会遍历所有实现CommandLineRunner的实体类并执行run方法,如果需要按照一定的顺序去执行,那么就需要在实体类上使用一个@Order注解(或者实现Order接口)来表明顺序

    package org.springboot.sample.runner;
    
    import org.springframework.boot.CommandLineRunner;
    import org.springframework.core.annotation.Order;
    import org.springframework.stereotype.Component;
    
    
    @Component
    @Order(value=2)
    public class MyStartupRunner1 implements CommandLineRunner {
    
    @Override
    public void run(String... args) throws Exception {
    System.out.println(">>>>>>>>>>>>>>>服务启动执行 2222 <<<<<<<<<<<<<");
    }
    
    }
    package org.springboot.sample.runner;
    
    import org.springframework.boot.CommandLineRunner;
    import org.springframework.core.annotation.Order;
    import org.springframework.stereotype.Component;
    
    @Component
    @Order(value=1)
    public class MyStartupRunner2 implements CommandLineRunner {
    
    @Override
    public void run(String... args) throws Exception {
    System.out.println(">>>>>>>>>>>>>>>服务启动执行 111111 <<<<<<<<<<<<<");
    }
    
    }

    > 控制台显示
    ```
    >>>>>>>>>>>>>>>服务启动执行 11111111 <<<<<<<<<<<<<
    >>>>>>>>>>>>>>>服务启动执行 22222222## 标题 ## <<<<<<<<<<<<<
    ```
    > 根据控制台结果可判断,@Order 注解的执行优先级是按value值从小到大顺序。

  • 相关阅读:
    容器技术(三)搭建本地 Registry【15】
    容器技术(三) 使用公共 Registry【14】
    容器技术(三) 镜像命名的最佳实践【13】
    容器技术(三) RUN vs CMD vs ENTRYPOINT【12】
    容器技术(三) dockerfile常用指令【11】
    容器技术(三) dockerfile调试【10】
    容器技术(三) 镜像缓存特性【9】
    容器技术(三) Dockerfile 构建镜像【8】
    容器技术(三)构建镜像【7】
    layui的图标知识
  • 原文地址:https://www.cnblogs.com/cq-yangzhou/p/10936417.html
Copyright © 2011-2022 走看看