美文网首页
springboot项目启动之后,需要主动执行一些方法

springboot项目启动之后,需要主动执行一些方法

作者: 帮我的鸵鸟盖个章 | 来源:发表于2021-03-03 09:57 被阅读0次

    springboot项目启动之后,需要主动执行一些方法。可使用以下两种方法:

    1. @Component 实现`ApplicationRunner 类

    package com.bnq.privacy.server.config;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.ApplicationArguments;
    import org.springframework.boot.ApplicationRunner;
    import org.springframework.stereotype.Component;
    
    import java.text.ParseException;
    
    /**
     * get up mns way after application run
     *
     * @author HongYi@10004580
     * @createTime 2021年03月02日 17:46:00
     */
    @Component
    public class MnsApplicationRunner implements ApplicationRunner {
        private static final Logger logger = LoggerFactory.getLogger(MnsApplicationRunner.class);
    
        @Override
        public void run(ApplicationArguments args) throws Exception {
            logger.info("==== 唤醒通话记录监听开始 ===");
            getReportMsg();
            logger.info("==== 唤醒通话记录监听成功 ===");
        }
    }
    
    

    2. @Component 实现CommandLineRunner

    @Component
    public class DemoComLiner implements CommandLineRunner {
        @Override
        public void run(String... args) throws Exception {
            System.out.println("CommandLineRunner");
        }
    }
    

    以上两个XXXRunner接口,如果有多个实现其中同一个,可以通过@Order(123)注解进行排序,进行顺序执行。

    另外,如果方法执行失败,可能造成springboot启动不成功。第一个demo中,由于getReportMsg()方法中有一个包找不到,导致程序直接重启了一晚上,第二天早上来才知道,还好只是测试环境。

    由于项目使用的是springboot + dubbo ,在本地测试的时候,正常启动项目之后,MnsApplicationRunner implements ApplicationRunner是可以的。但是发布到线上环境之后,发现并不可以,日志未打出,想要实现的唤醒MQ监听也未实现。于是换了下面一种写法。

    在springboot的启动类中添加:

        @Bean
        public ApplicationRunner runner() {
            return args -> {
                logger.info("==== 唤醒通话记录监听开始 ===");
                this.getReportMsg();
                logger.info("==== 唤醒通话记录监听成功 ===");
                logger.info("==== 唤醒通话录音监听开始 ===");
                this.getRecordingMsg();
                logger.info("==== 唤醒通话录音监听成功 ===");
            };
        }
    
    

    再在测试环境启动项目,成功!

    dubbo测试环境ok.png

    相关文章

      网友评论

          本文标题:springboot项目启动之后,需要主动执行一些方法

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