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工作,不做业务初始化。

相关推荐
XUHUOJUN10 分钟前
Azure Local 2602→2606 演进全景:2604 为什么是架构转折点(2602→2606 演进与升级价值·中篇)
架构·azure local
恒拓高科WorkPlus1 小时前
BeeWorks Meet私有化视频会议:内网会议、组织架构联动与会议安全
安全·架构
adinnet20262 小时前
深度拆解企业级 Agent 架构:LangGraph + 知识图谱 + 向量检索的协同设计
人工智能·架构·知识图谱
listening7772 小时前
HarmonyOS 6.1 混沌工程实战:从“故障免疫”到“韧性架构”
华为·架构·harmonyos
晚风吹长发2 小时前
Docker使用——Docker容器及相关命令
linux·运维·服务器·docker·容器·架构
郝学胜-神的一滴2 小时前
[简化版 GAMES 104] 现代游戏引擎 02:拆解现代游戏引擎5+1层级架构,吃透引擎底层核心逻辑
c++·unity·架构·游戏引擎·图形渲染·unreal engine·系统设计
电子科技圈2 小时前
先进封装、芯粒架构和3D集成——先进异构集成亟需兼具标准化与定制化能力的互联及总线IP解决方案
tcp/ip·设计模式·架构·软件构建·代码规范·设计规范
小码哥哥3 小时前
RAG系统存储架构深度解析:异构存储统一接入、向量化索引优化与物理级数据隔离实践
架构
愚公移码3 小时前
蓝凌EKP18产品:整体架构
java·架构·蓝凌
AI小白Lin3 小时前
33 个 AI 专家全票通过?那问题才刚开始
人工智能·架构