springboot架构启动挂接点

如果想在springboot启动过程中完成某些工作,可以有如下挂接点:

1、main函数里

这个是最古老,也是最简单的挂接点。适合做些与 Spring 容器无关的前置操作。

2、实现CommandLineRunner类

@Component

@Order(1) // 执行优先级,1 比 2 先执行

public class MyCommandLineRunner implements CommandLineRunner {

@Override

public void run(String... args) throws Exception {

// 启动时执行的逻辑,比如初始化缓存、加载字典数据

System.out.println("CommandLineRunner 执行,命令行参数:" + String.join(",", args));

}

}

3、实现ApplicationRunner类

@Component

@Order(2)

public class MyApplicationRunner implements ApplicationRunner {

@Override

public void run(ApplicationArguments args) throws Exception {

// 获取命名参数(如启动时传入 --name=test)

System.out.println("命名参数 name 的值:" + args.getOptionValues("name"));

// 获取非命名参数

System.out.println("非命名参数:" + args.getNonOptionArgs());

}

}

4、单个bean的初始化

@Component

public class MyBean {

@PostConstruct

public void init() {

// 当前 Bean 初始化后执行,比如初始化 Bean 内部的属性

System.out.println("Bean 初始化后执行 @PostConstruct");

}

}

  1. ApplicationListener(监听启动事件)

@Component

public class MyApplicationListener implements ApplicationListener<ContextRefreshedEvent> {

// 实现对应接口即可

}

6.@Configuration注解

一般在注解类里实现初始化bean工作,不做业务初始化。

相关推荐
SLD_Allen3 小时前
NVIDIA KAI Scheduler深度解析——Kubernetes原生AI调度器的架构、原理与实践
人工智能·架构·kubernetes
haishikeji696_4 小时前
市域低空巡查平台架构|无人机管理系统、飞控管理平台、无人机巡检平台、无人机智慧巡查系统
架构·无人机·低空经济·无人机管理系统·飞控管理平台
葡萄城技术团队5 小时前
InfluxDB 2\.x 深度解析:核心架构、Flux 函数与制造业落地指南(三)
java·开发语言·架构
mldong7 小时前
零依赖的秘密:8 大 SPI 设计
java·架构
IT大白鼠8 小时前
n8n工作流自动化平台技术架构与应用价值评估
运维·架构·自动化·n8n
一只叫煤球的猫10 小时前
从 Java 21 到 Java 25:ThreadLocal 以外的选择—— ScopedValue
java·后端·架构
core51210 小时前
如何从多架构 Docker 镜像中导出指定的 ARM64 版本
华为·docker·架构·镜像·导出·多架构
这个DBA有点耶11 小时前
读懂半连接:IN/EXISTS子查询什么时候快、什么时候慢?
数据库·性能优化·架构
智慧物业老杨13 小时前
业主大会投票系统的技术重构:从合规失守到可信架构
重构·架构
一叶飘零_sweeeet13 小时前
别等业务中断才补坑!RTO/RPO 核心逻辑与全场景灾备架构选型全攻略
数据库·架构·容灾备份