zoukankan      html  css  js  c++  java
  • SpringBoot启动加载类ApplicationRunner

      关于这个ApplicationRunner的使用场景,今天有些新的理解。

    1.说明

      希望项目在启动的时候加载一些系统参数,就要用到ApplicationRunner

      ApplicationRunner是一个接口,我们需要实现它,并重写run()方法,当项目启动时,run()方法便会自动执行。

    2.场景2

      这个接口只有这点功能,我们也许感觉,springboot中在启动中加载参数,只用application.yml更加方便。

      其实,这里有一种场景就非常适合使用这种场景。

      项目存在一个队列,在项目一进行启动就可以往队列中添加数据,然后,从队列中消费数据。

    3.验证

      结构:

      

      程序:

    package com.jun.webpro.common.config.startup;
    
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.boot.ApplicationArguments;
    import org.springframework.boot.ApplicationRunner;
    import org.springframework.core.annotation.Order;
    import org.springframework.stereotype.Component;
    
    @Component
    @Slf4j
    @Order(value = 1)
    public class StartLoader implements ApplicationRunner {
        @Override
        public void run(ApplicationArguments args){
            loadSysParams();
        }
        public void loadSysParams(){
            System.out.println("【系统参数1】加载中...");
    
            System.out.println("【系统参数1】加载完成...");
        }
    }
    

      

    package com.jun.webpro.common.config.startup;
    
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.boot.ApplicationArguments;
    import org.springframework.boot.ApplicationRunner;
    import org.springframework.core.annotation.Order;
    import org.springframework.stereotype.Component;
    
    @Component
    @Slf4j
    @Order(value = 2)
    public class SecondLoader implements ApplicationRunner {
        @Override
        public void run(ApplicationArguments args){
            loadSysParams();
        }
        public void loadSysParams(){
            System.out.println("【系统参数2】加载中...");
    
            System.out.println("【系统参数2】加载完成...");
        }
    }
    

      

    4.结果:

      可以发现,在程序启动之后,这里才运行起来。

    2020-03-23 19:03:01.910  INFO 14084 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 9090 (http) with context path ''
    2020-03-23 19:03:01.913  INFO 14084 --- [           main] com.jun.webpro.WebproApplication         : Started WebproApplication in 6.988 seconds (JVM running for 7.941)
    【系统参数1】加载中...
    【系统参数1】加载完成...
    【系统参数2】加载中...
    【系统参数2】加载完成...
    

      

    5.说明

      @Order说明加载顺序

      @Component让类进行自动加载。

  • 相关阅读:
    [LeetCode] 199. Binary Tree Right Side View
    [LeetCode] 360. Sort Transformed Array
    [LeetCode] 146. LRU Cache
    [LeetCode] 28. Implement strStr()
    [LeetCode] 498. Diagonal Traverse
    [LeetCode] 545. Boundary of Binary Tree
    [LeetCode] 937. Reorder Data in Log Files
    软件开发之我剑!软件测试, 房子的刚性需求【原】
    c#调用Delphi的dll函数遇到的问题及解决方法
    C# 回调函数
  • 原文地址:https://www.cnblogs.com/juncaoit/p/12554196.html
Copyright © 2011-2022 走看看