springboot 启动时就执行特定接口 📅 发布时间:2026/7/7 2:05:57 👁️ 浏览次数: 在 Spring Boot 中有多种方式可以在应用启动时自动执行特定代码如调用接口。以下是几种常用方法及适用场景 方法一CommandLineRunner推荐适用于启动后立即执行一次性任务。import org.springframework.boot.CommandLineRunner; import org.springframework.stereotype.Component; Component public class StartupRunner implements CommandLineRunner { Override public void run(String... args) throws Exception { System.out.println(Spring Boot 启动完成执行特定接口...); // 调用你的接口逻辑 callYourApi(); } private void callYourApi() { // 你的接口调用代码 System.out.println(接口调用成功); } }特点简单直接可注入其他 Bean支持多个CommandLineRunner通过Order控制执行顺序 方法二ApplicationRunner推荐与CommandLineRunner类似但参数封装为ApplicationArguments更易处理。import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.stereotype.Component; Component public class AppStartupRunner implements ApplicationRunner { Override public void run(ApplicationArguments args) throws Exception { System.out.println(应用启动执行接口调用...); callYourApi(); } private void callYourApi() { // 接口调用逻辑 } } 方法三PostConstructBean 初始化后执行适用于某个特定 Bean 初始化完成后执行。import javax.annotation.PostConstruct; import org.springframework.stereotype.Component; Component public class InitService { PostConstruct public void init() { System.out.println(Bean 初始化完成执行接口调用...); callYourApi(); } private void callYourApi() { // 接口调用逻辑 } }特点在依赖注入完成后、Autowired之后执行适合与特定 Bean 绑定的初始化逻辑 方法四监听ApplicationReadyEvent应用完全就绪后适用于需要在 Spring 容器完全初始化、所有 Bean 就绪后再执行的场景。import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Component; Component public class AppReadyListener { EventListener(ApplicationReadyEvent.class) public void onApplicationReady() { System.out.println(应用完全就绪执行接口调用...); callYourApi(); } private void callYourApi() { // 接口调用逻辑 } } 方法五ApplicationListener监听事件传统方式监听ContextRefreshedEvent。import org.springframework.context.ApplicationListener; import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.stereotype.Component; Component public class ContextRefreshedListener implements ApplicationListenerContextRefreshedEvent { Override public void onApplicationEvent(ContextRefreshedEvent event) { if (event.getApplicationContext().getParent() null) { // 防止父容器触发多次 System.out.println(上下文刷新完成执行接口调用...); callYourApi(); } } private void callYourApi() { // 接口调用逻辑 } } 各方法执行顺序对比方法执行时机适用场景PostConstructBean 初始化后与特定 Bean 绑定的初始化CommandLineRunner / ApplicationRunnerSpring 容器启动后ApplicationReadyEvent 之前一次性启动任务ApplicationReadyEvent所有 Bean 就绪应用完全可用需要完整上下文的任务ContextRefreshedEvent上下文刷新完成传统方式兼容性好 示例调用外部 HTTP 接口import org.springframework.boot.CommandLineRunner; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import org.springframework.web.client.RestTemplate; Component public class ApiCallRunner implements CommandLineRunner { private final RestTemplate restTemplate; public ApiCallRunner(RestTemplate restTemplate) { this.restTemplate restTemplate; } Override public void run(String... args) throws Exception { String url http://api.example.com/endpoint; ResponseEntityString response restTemplate.getForEntity(url, String.class); if (response.getStatusCode().is2xxSuccessful()) { System.out.println(接口调用成功: response.getBody()); } else { System.err.println(接口调用失败: response.getStatusCode()); } } }⚙️ 配置 RestTemplate Bean如需import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.client.RestTemplate; Configuration public class AppConfig { Bean public RestTemplate restTemplate() { return new RestTemplate(); } }✅ 总结推荐需求推荐方法简单启动任务CommandLineRunner 或 ApplicationRunner需要完整上下文ApplicationReadyEvent与特定 Bean 绑定PostConstruct需要控制执行顺序多个 CommandLineRunner Order
PostgreSQL 故障排查:如何找出数据库中最耗时的 SQL 语句 文章目录一、核心目标与排查原则1. 明确“耗时”的定义2. 排查原则二、方法一:启用并分析 pg_stat_statements(首选方案)1. 安装与配置(1)修改 postgresql.conf(2)创建扩展2. 核心视图字段说明3… 2026/7/7 2:05:57
【开题答辩全过程】以 基于SSM的好物推荐系统的设计与实现为例,包含答辩的问题和答案 个人简介一名14年经验的资深毕设内行人,语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的… 2026/7/6 6:21:38
技术发展的核心规律是「加法打底,减法优化,重构平衡」 一、先结论:技术发展的核心规律是「加法打底,减法优化,重构平衡」 不是单纯的“只加不减”,也不是“完全减法”,而是: 先做加法:解决“从无到有”的核心问题(比如你提到的Spring N… 2026/5/17 3:26:17
为什么90%的企业AI培训没效果?2026九尾狐AI实战陪跑趋势解读 90%企业AI培训失效?一套实战陪跑评估体系助你破局开头:写给谁看?解决什么问题?如果你是企业的决策者、技术负责人或培训采购经理,正面临“团队学了无数AI课,业务效益却分毫未动”的困境,那么这篇… 2026/7/7 2:04:04
收藏!小白程序员轻松入门大模型,抓住AI时代红利! 文章探讨了AI Agent开发现状,分为内部提效和对外平台两大方向。初创公司多聚焦于Ai Coding的To B服务。作者反思了工作意义,强调认知内执行与认知外创新的差异,呼吁保持真诚,追求有价值的工作,而非盲目跟风。同时&… 2026/7/7 2:04:04
Web 安全手工识别 SQL 注入全实战(DVWA Low 完整复现 + 底层源码拆解 + 踩坑防护) 前言很多网络安全初学者刚接触渗透测试时,一上来就直接使用 Sqlmap 自动化工具跑注入,完全忽略手工判断注入点这一核心基础能力。在等保测评、企业渗透实战中,大量 WAF 会直接拦截工具特征流量,此时只能依靠手工 Payload 判断漏洞… 2026/7/7 2:02:04
云原生数据库字段加密:透明代理与KMS集成架构实践 1. 项目概述:当敏捷开发遇上数据合规的“硬骨头” 最近几年,我参与和主导了多个从单体架构向云原生微服务架构迁移的项目。一个几乎在每个项目后期都会浮出水面的、让人头疼的问题,就是数据安全,尤其是数据库字段级别的加密。开发… 2026/7/7 1:56:01
06-高级模式与实战项目——10. 组件测试 - React Testing Library 10. 组件测试 - React Testing Library 概述 React Testing Library (RTL) 是一个用于测试 React 组件的工具库,它鼓励编写以用户行为为中心的测试,而不是测试实现细节。通过模拟用户交互,验证组件的行为是否符合预期。 维度内容What以用户… 2026/7/7 1:54:01
华为加速商业市场AI落地:要让鲲鹏昇腾算力像用水电一样便利 进入2026年以来,从“全民养虾潮”的现象级破圈,到AI深度嵌入企业生产经营,AI正加速从“生成内容”迈向“执行任务”的实质性落地阶段。在赋能千行百业的过程中,拥抱AI不再是大企业的专利,超6000万家中小企业正从观望者… 2026/7/7 1:54:01
Acunetix v24.8 深度解析:DAST漏洞扫描器核心原理与DevSecOps实践 1. 项目概述:Acunetix v24.8 高级版漏洞扫描器深度解析作为一名在网络安全领域摸爬滚打多年的老兵,我深知一款趁手的“兵器”对于安全测试工作意味着什么。今天要聊的,就是Web应用安全测试领域里一个响当当的名字——Acunetix。特别是其v24.8… 2026/7/7 0:01:11
如何3步搞定加密视频下载:跨平台资源嗅探与解密工具终极指南 如何3步搞定加密视频下载:跨平台资源嗅探与解密工具终极指南 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 你是… 2026/7/7 0:03:13
Jailhouse-gui可视化管理工具:让多核处理器分区变得简单高效 Jailhouse-gui可视化管理工具:让多核处理器分区变得简单高效 【免费下载链接】Jailhouse-gui A graphical user interface (GUI) tool for configuring and managing Jailhouse, a Linux-based hypervisor for partitioning multicore processors into isolated cel… 2026/7/7 0:03:13
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/6 8:43:22
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/6 7:29:49
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/6 7:29:51