码迷,mamicode.com
首页 > 编程语言 > 详细

springboot 中CommandLineRunner接口的作用

时间:2020-05-26 18:07:37      阅读:77      评论:0      收藏:0      [点我收藏+]

标签:llb   throws   href   number   就是   code   idt   strip   一个   

原文地址:https://www.jianshu.com/p/13980d3ee7fd

先看CommandLineRunner接口的API:

import org.springframework.core.annotation.Order;
public interface CommandLineRunner {
    /**
     * Callback used to run the bean.
     * @param args incoming main method arguments
     * @throws Exception on error
     */
    void run(String... args) throws Exception;
}

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

ex:

import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

@Component
public class StartupRunner implements CommandLineRunner{
    @Override
    public void run(String... args) throws Exception {
        System.out.println(">>>>>>>>>>>>>>>服务启动执行,执行加载数据等操作<<<<<<<<<<<<<");
    }
}

启动截图示例:


 
技术图片
TIM图片20190225161118.png
如果有多个类实现CommandLineRunner接口,如何保证顺序:

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

ex1:

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

@Component
@Order(value=1)
public class StartupRunnerOne implements CommandLineRunner{
    @Override
    public void run(String... args) throws Exception {
        System.out.println(">>>>>>>>>>>>>>>服务启动第一个开始执行的任务,执行加载数据等操作<<<<<<<<<<<<<");
    }
}

ex2:

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

@Component
@Order(value=2)
public class StartupRunnerTwo implements CommandLineRunner{
    @Override
    public void run(String... args) throws Exception {
        System.out.println(">>>>>>>>>>>>>>>服务第二顺序启动执行,执行加载数据等操作<<<<<<<<<<<<<");
    }
}

上面两个类的示例代码,启动后执行顺序看截图:


 
技术图片


作者:番茄块块
链接:https://www.jianshu.com/p/13980d3ee7fd
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

springboot 中CommandLineRunner接口的作用

标签:llb   throws   href   number   就是   code   idt   strip   一个   

原文地址:https://www.cnblogs.com/eyesfree/p/12966938.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!