当前位置: 首页 > article >正文

Springboot项目启动成功后可通过五种方式继续执行

  1. 实现CommandLineRunner接口
    项目初始化完毕后,才会调用方法,提供服务
@Component
public class StartRunner implements CommandLineRunner {

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

  1. 实现ApplicationRunner接口
    同 CommandLineRunner。只是传参格式不一样。CommandLineRunner:没有任何限制;ApplicationRunner:key-value
@Component
public class StartRunner implements ApplicationRunner {

    @Override
    public void run(ApplicationArguments args) {
        System.out.println("ApplicationRunner=================");
    }
}

  1. 实现ApplicationListener接口
    项目初始化完毕后,才会调用方法,提供服务。注意监听的事件,通常是 ApplicationStartedEvent 或者 ApplicationReadyEvent,其他的事件可能无法注入 bean。
@Component
public class StartListener implements ApplicationListener<ApplicationStartedEvent> {

    @Override
    public void onApplicationEvent(ApplicationStartedEvent event) {
        System.out.println("ApplicationListener================ApplicationStartedEvent");
    }
}

如果监听的是 ApplicationStartedEvent 事件,则 ApplicationListener 一定会在 CommandLineRunner 和 ApplicationRunner 之前执行;
如果监听的是 ApplicationReadyEvent 事件,则 ApplicationListener 一定会在 CommandLineRunner 和 ApplicationRunner 之后执行;
顺序:
默认是 ApplicationRunner 先执行,如果双方指定了@Order 则按照 @Order的大小顺序执行,小的先执行

  1. @PostConstruct注解
    在项目初始化过程中,就会调用此方法。如果业务逻辑执行很耗时,可能会导致项目启动失败。
@Component
public class StartInit {

    @PostConstruct
    public void init() {
        System.out.println("@PostConstruct===============================");
    }

}

  1. 实现InitalizingBean接口
    项目启动时,调用此方法
@Component
public class StartSet implements InitializingBean {

    @Override
    public void afterPropertiesSet() {
        System.out.println("InitializingBean====================");
    }

}


http://www.kler.cn/a/158837.html

相关文章:

  • nfs服务器--RHCE
  • 使用win32com将ppt(x)文件转换为pdf文件
  • 跨平台WPF框架Avalonia教程 十五
  • 【windows笔记】08-Windows中的各种快捷方式、符号链接、目录联接、硬链接的区别和使用方法
  • ubuntu 安装kafka-eagle
  • 排序算法(基础)大全
  • QLineEdit 的 InputMask掩码
  • vue+echarts实现依赖关系无向网络拓扑结图节点折叠展开策略
  • 使用Redis构建简易社交网站(1)-创建用户与动态界面
  • 【渗透+取证】博客传送门(持续更新中)
  • lv11 嵌入式开发 RTC 17
  • LeetCode22. 括号生成
  • 从一个简单的实际例子看并行处理
  • Python文件打包成exe可执行文件
  • Netty网络编程
  • [Java][项目][战斗逻辑]基于JFrame的文字游戏
  • centos7.5常见的mysql方式
  • springboot075电影评论网站系统设计与实现
  • Python的海龟 turtle 库使用详细介绍(画任意多边形,全网最详细)
  • Oracle:左连接、右连接、全外连接、(+)号详解
  • 实现Linux SSH免密码登录:使用密钥对进行身份验证
  • Python高级数据结构——树(Tree)
  • File类—递归文件搜索执行脚本文件
  • DFT(离散傅里叶变换)的通俗理解
  • NumPy中,数组的类型是 numpy.ndarray
  • YOLOv5项目实战(5)— 算法模型优化和服务器部署