美文网首页springboot
SpringBoot--实战开发--启动类(四)

SpringBoot--实战开发--启动类(四)

作者: 无剑_君 | 来源:发表于2019-05-06 09:08 被阅读52次

    一、启动类

    (一)启动类CommandLineRunner:

    在Spring boot项目的实际开发中,我们有时需要项目服务启动时加载一些数据或预先完成某些动作。为了解决这样的问题,Spring boot 为我们提供了一个方法:通过实现接口 CommandLineRunner 来实现这样的需求。
    实现方式:只需要一个类即可,无需其他配置。
    应用场景:
    动态初始化配置。
    需要在容器启动的时候执行一些内容,比如:读取配置文件信息,数据库连接,删除临时文件,清除缓存信息,在Spring框架下是通过ApplicationListener监听器来实现的。

    实现步骤:
    1.创建实现接口 CommandLineRunner 的类 MyStartupRunnerTest

    package com.neuedu;  
      
    import org.springframework.boot.CommandLineRunner;  
    import org.springframework.core.annotation.Order;  
    import org.springframework.stereotype.Component;  
     
    @Component  
    @Order(value=1)
    public class MyStartupRunnerTest implements CommandLineRunner  
    {  
        @Override  
        public void run(String... args) throws Exception  
        {  
            System.out.println(">>>>This is MyStartupRunnerTest Order=1. Only testing CommandLineRunner...<<<<");  
        }  
    }  
    

    2.创建实现接口CommandLineRunner 的类 MyStartupRunnerTest2

    package com.neuedu;  
      
    import org.springframework.boot.CommandLineRunner;  
    import org.springframework.core.annotation.Order;  
    import org.springframework.stereotype.Component;  
      
    @Component  
    @Order(value=2)
    public class MyStartupRunnerTest2 implements CommandLineRunner  
    {  
        @Override  
        public void run(String... args) throws Exception  
        {  
            System.out.println(">>>>This is MyStartupRunnerTest Order=2. Only testing CommandLineRunner...<<<<");  
        }  
    }  
    
    

    说明:CommandLineRunner接口的运行顺序是依据@Order注解的value由小到大执行,即value值越小优先级越高。

    (二)启动类ApplicationRunner

    ApplicationRunner中run方法的参数为ApplicationArguments,而CommandLineRunner接口中run方法的参数为String数组。想要更详细地获取命令行参数,那就使用ApplicationRunner接口。

    @Component
    @Order(value = 10)
    public class AgentApplicationRun2 implements ApplicationRunner {
        @Override
        public void run(ApplicationArguments applicationArguments) throws Exception {
    
        }
    }
    

    (三)两者的区别:

    ApplicationRunner中run方法的参数为ApplicationArguments,而CommandLineRunner接口中run方法的参数为String数组。想要更详细地获取命令行参数,那就使用ApplicationRunner接口。

    相关文章

      网友评论

        本文标题:SpringBoot--实战开发--启动类(四)

        本文链接:https://www.haomeiwen.com/subject/boxqoqtx.html