zoukankan      html  css  js  c++  java
  • springboot 中CommandLineRunner接口的作用

    原文地址: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
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    算法实现:在10个数中选6个数,显示所有组合
    转载:PostgreSQL和MySQL协议简介
    转载:国内外高精地图厂商一览
    使用带key访问iPortalREST服务
    cass启动提示Frame主框架程序没有加载
    设置Gridview单元格内容不换行
    Sql自定义编号唯一性问题
    关于EXCEL数据导入到SQLServer中字段存在NULL的问题
    Gridview显示网格线
    ComboBox自动匹配查找
  • 原文地址:https://www.cnblogs.com/eyesfree/p/12966938.html
Copyright © 2011-2022 走看看