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

Spring Boot项目启动时执行指定的方法

项目场景:

本文介绍Spring Boot项目启动时执行指定的方法两种常用方式和他们之间的区别。


实现方案:

方式一:使用注解@PostConstruct

@Component
public class PostConstructTest {@PostConstructpublic void postConstruct() {System.out.println("启动时自动执行  @PostConstruct 注解方法");}
}

优点: 简单方便,加上一个注解就行了。

缺点:如果@PostConstruct方法内的逻辑处理时间较长,就会增加SpringBoot应用初始化Bean的时间,进而增加应用启动的时间。因为只有在Bean初始化完成后,SpringBoot应用才会打开端口提供服务,所以在此之前,应用不可访问。

建议:轻量的逻辑可放在Bean的@PostConstruct方法中,耗时长的逻辑如果放在@PostConstruct方法中,可使用@Async异步方法。

使用异步代码示例:

@Service
public class TestService {@Async("testAsync")  //指定线程池public void test() {System.out.println("------------------------异步方法开始 " + Thread.currentThread().getName());try {Thread.sleep(3000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("----------------异步方法执行完了" + Thread.currentThread().getName());}
}
@Component
public class PostConstructTest {@Autowiredprivate TestService testService;@PostConstructpublic void postConstruct() {System.out.println("启动时自动执行  @PostConstruct 注解方法");testService.test();}
}

Spring Boot中多个PostConstruct注解执行顺序控制_多个postconstruct执行顺序-CSDN博客 


方式二:实现CommandLineRunner接口

@Component
public class CommandLineRunnerImpl implements CommandLineRunner {@Overridepublic void run(String... args) throws Exception {System.out.println("启动时自动执行 CommandLineRunner 的 run 方法");}
}

优点: 项目已经初始化完毕,才会执行方法,所以不用等这个方法执行完,就可以正常提供服务了。

缺点:暂未发现。

http://www.lryc.cn/news/338243.html

相关文章:

  • 红豆Cat 1开源|项目三: 从0-1设计一款HTTP版本RTU(支持GNSS)产品的软硬件全过程
  • 在 Mac 上配置高级内容缓存设置
  • 算法与数据结构 顺序栈(C++)
  • 【WSL】在WIN11安装并使用Linux子系统(Ubuntu)
  • 【vim 学习系列文章 20 -- a:mode 的值有哪些?】
  • sed命令多行处理
  • Secure Copy Protocol or SCP - 安全拷贝协议
  • Java面试题:什么是Java的值传递和引用传递?列举其应用场景,并说明其特点
  • Java 基于微信小程序的智能停车场管理小程序
  • python基础——类型注解【变量,函数,Union】
  • 人工智能研究生前置知识—科学计算库numpy
  • element UI 设置type=“textarea“ 禁止输入框缩放
  • Rust腐蚀服务器常用参数设定详解
  • 无人机巡检技术革命性变革光伏电站运维管理
  • 【学习】软件信创测试中,如何做好兼容性适配
  • 阿里云ACK k8s集群迁移
  • 1.3 字符设备驱动
  • 计算机毕业设计springboot小区物业报修管理系统m8x57
  • 深度学习体系结构——CNN, RNN, GAN, Transformers, Encoder-Decoder Architectures算法原理与应用
  • js 数字的常用方法梳理
  • STM32H743VIT6使用STM32CubeMX通过I2S驱动WM8978(5)
  • Objective-C学习笔记(block,协议)4.10
  • AD7982BRMZRL7 二进制 500kSPS 模数转换芯片 ADI
  • 采集某新闻网资讯网站保存PDF
  • 03攻防世界-unserialize3
  • 蓝桥杯备考随手记: 常见的二维数组问题
  • Java | Leetcode Java题解之第28题找出字符串中第一个匹配项的下标
  • 【数据结构与算法】:二叉树经典OJ
  • uniapp——长按识别二维码
  • 云服务器环境web环境搭建之JDK、redis、mysql