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

相关推荐
IT规划师15 分钟前
HybridCache-缓存架构决策框架落地
架构·.net
Eyfcom12 小时前
〖全球化架构 05〗跨国网络专线优化:QUIC 协议与 SD-WAN 在跨境传输中的实战
网络·架构·跨境物流快递系统·全球化架构
Tapdata17 小时前
被忽略的第三类上下文:Agent 进入真实业务后,还缺什么?
数据库·人工智能·架构
赤生云电竞18 小时前
GPU算力共享平台架构实践:任务分发与资源隔离的关键配置
算法·架构·gpu算力
一条Go20 小时前
OnCall 时段路由:跨午夜、左闭右开与「Local 不是时区」
后端·架构·github
Dawson Zhu1 天前
【LLM推理与Serving⑨】业务模型推理引擎开发:以BEV自动驾驶为例的专用推理实践
人工智能·语言模型·架构·aigc·agi
Anymous1 天前
我手写的 Redis 锁,输给了 10 秒的 TTL
后端·架构
草莓熊Lotso1 天前
【C++ 基于微服务的即时通讯系统】文件存储子服务实战:UUID生成、文件IO封装与全接口单元测试
开发语言·网络·数据库·c++·微服务·架构·单元测试
非优秀程序员1 天前
第04章 邮箱大战,163 与 QQ 的暗战|《互联网产品恩仇录》
java·vue.js·架构