启动成功后可以通过以下方法运行自己的初始代码:
- @PostConstruct注解
- ApplicationReadyEvent事件
- CommandLineRunner/ApplicationRunner接口
@Component
public class StartUpInit {
@Autowired
private SomeService service;
@PostConstruct
public void init(){
// ...
}
}
@Component
public class GeneralEventHandler {
@EventListener
public void handleApplicationReady(ApplicationReadyEvent event) {
log.info("The application is ready to service requests..");
}
}
Spring Boot提供了两个接口:CommandLineRunner、ApplicationRunner,用于启动应用时做特殊处理,这些代码会在SpringApplication的run()方法运行完成之前被执行。
通常用于应用启动前的特殊代码执行、特殊数据加载、垃圾数据清理、微服务的服务发现注册、系统启动成功后的通知等。相当于Spring的ApplicationListener、Servlet的ServletContextListener。
CommandLineRunner 和 ApplicationRunner 的区别是run()方法的参数不同。
(1)CommandLineRunner:参数是字符串数组
@Component
public class CommandLineAppStartupRunner implements CommandLineRunner {
private static final Logger logger = LoggerFactory.getLogger(CommandLineAppStartupRunner.class);
@Override
public void run(String... args) throws Exception {
logger.info("Application started with command-line arguments: {} . \n To kill this application, press Ctrl + C.", Arrays.toString(args));
}
}
(2)ApplicationRunner:参数被放入ApplicationArguments
通过getOptionNames()、getOptionValues()、getSourceArgs()获取参数
@Component
public class AppStartupRunner implements ApplicationRunner {
private static final Logger logger = LoggerFactory.getLogger(AppStartupRunner.class);
@Override
public void run(ApplicationArguments args) throws Exception {
logger.info("Your application started with option names : {}", args.getOptionNames());
}
}
也可以两个接口同时实现,但是没有必要。
@Component
public class StartupRunner implements CommandLineRunner, ApplicationRunner {
private static final Logger logger = LoggerFactory.getLogger(CommandLineAppStartupRunner.class);
@Override
public void run(String... args) throws Exception {
logger.info("Application started with command-line arguments: {} . \n To kill this application, press Ctrl + C.", Arrays.toString(args));
}
@Override
public void run(ApplicationArguments args) throws Exception {
logger.info("Your application started with option names : {}", args.getOptionNames());
}
}
也可以通过@Bean定义
@Configuration
public class RunnerConfig {
@Bean
public CommandLineRunner runner(){
return new CommandLineRunner() {
public void run(String... args){
System.out.println("CommandLineRunner run()");
}
};
}
}
(3)通过@Order设置执行顺序
@Component
@Order(3)
public class Runner1 implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
System.out.println("Runner1 run()");
}
}
@Component
@Order(2)
public class Runner2 implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
System.out.println("Runner2 run()");
}
}
@Component
@Order(1)
public class Runner3 implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
System.out.println("Runner3 run()");
}
}
(4)注入Bean
CommandLineRunner在被执行时,Spring内部已经启动完成,可以注入Spring的Bean。
@Component
public class StartupRunner implements CommandLineRunner {
@Autowired
private SampleService sampleService;
@Override
public void run(String... args) throws Exception {
sampleService.executeSample();
}
}
分享到:
相关推荐
- **使用ApplicationRunner或CommandLineRunner**:介绍两种运行启动任务的方式。 - **Application退出**:说明如何优雅地关闭Spring Boot应用。 - **Admin特性**:介绍Spring Boot提供的一些管理员级别的特性。 ...
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。
项目简介: 推荐 JDK21 Mysql8.0+,Maven、Springboot3 项目核心依赖极致简化: Mysql-驱动 ->mysql-connector-java 接口API文档->knife4j-openapi3-jakarta-spring-boot-starter 项目脚手架->pring-boot-starter-web|使用spring-boot-starter-undertow ORM映射框架-> mybatis-plus-boot-starter 全能工具包-> hutool-all 用户认证和权限框架->sa-token-spring-boot3-starter
python学生信息管理系统+MySql(高分毕设/大作业),个人经导师指导并认可通过的高分设计项目,评审分98分,项目中的源码都是经过本地编译过可运行的,都经过严格调试,确保可以运行!主要针对计算机相关专业的正在做大作业、毕业设计的学生和需要项目实战练习的学习者,资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。 python学生信息管理系统+MySql(高分毕设/大作业)python学生信息管理系统+MySql(高分毕设/大作业)python学生信息管理系统+MySql(高分毕设/大作业)python学生信息管理系统+MySql(高分毕设/大作业)python学生信息管理系统+MySql(高分毕设/大作业)python学生信息管理系统+MySql(高分毕设/大作业)python学生信息管理系统+MySql(高分毕设/大作业)python学生信息管理系统+MySql(高分毕设/大作业)python学生信息管理系统+MySql(高分毕设/大作业)python学生信息管理系统+MySql(高分毕设/大作业)python学生信息管
【文章/演示视频链接:https://archie.blog.csdn.net/article/details/146442484?spm=1001.2014.3001.5502】扫地机器人系统采用分层结构设计,主要包括底层硬件控制层、中间数据处理层和上层用户交互层。底层硬件控制层负责对各个硬件模块进行控制和数据采集,中间数据处理层负责对采集到的数据进行处理和解算,上层用户交互层负责与用户进行交互并显示系统状态信息。主控模块采用STM32F103C8T6开发板,具有高性能、低成本、低功耗等优点,可连接外设完成不同功能。主控模块作为系统的核心控制单元,负责整体系统的控制和协调。超声波测距模块:负责测量扫地机器人与障碍物之间的距离,以便进行智能避障。红外感应模块:检测周围环境中的人体活动,用于智能避让行人功能。切换工作状态模块:用于切换扫地机器人的工作状态,例如启动清扫、停止清扫等。MPU6050姿态检测模块:检测扫地机器人的姿态,如倾斜角度等,以便进行动作校正。电源模块:为系统提供稳定的电源供应,包括升压、降压和滤波等功能。行走电机控制模块:控制机器人的行走、转向等动作,更多内容见链接。
校园资产管理(代码+数据库+LW)
442物资综合管理系统,系统包含两种角色:管理员、用户,主要功能如下。 【管理员功能】 1. 首页:提供管理员进入系统的入口。 2. 个人中心:管理员可以管理个人信息。 3. 管理员管理:添加、编辑、删除系统管理员账号。 4. 用户管理:查看、编辑、冻结或删除用户账号。 5. 公告管理:发布、编辑、删除系统通知和公告。 6. 物资管理:添加、编辑、删除物资信息。 7. 出入库管理:记录物资的出库和入库情况。 8. 物资申报管理:用户可以提交物资申请。 9. 月度用料管理:统计和管理每月物资的使用情况。 10. 操作日志管理:记录管理员的操作日志。 11. 基础数据管理:管理系统的基础数据。 【用户功能】 1. 首页:提供用户进入系统的入口。 2. 个人中心:用户可以管理个人信息。 3. 公告管理:用户可以查看系统发布的通知和公告。 4. 物资管理:用户可以浏览、查询系统中的物资信息。 5. 出入库管理:用户可以查看物资的出库和入库记录。 6. 物资申报管理:用户可以提交物资申请。 7. 月度用料管理:用户可以查看每月物资的使用情况。 8. 操作日志管理:用户可以查看自己的操作日志
FlutterGSYGithubAppFlutterWeexReactNativekotlin GithubAppGithubΣ()Weex https://github.com/CarGuo/GSYGithubAppWeex React Native https://github.com/CarGuo/GSYGithubApp kotlin https://github.com/CarGuo/GSYGithubAppKotlin
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。
大模型(LLMs)知识体系目录 P LLMs 激活函数篇 P 大模型(LLMs) RAG 版面分析——表... P LLMs 损失函数篇 P RAG (Retrieval-Augmented Generati... P 大模型(LLMs) RAG 版面分析——文... P Graph RAG 面——一种基于知识图谱的... P 大模型(LLMs) RAG 优化策略——RA... P 大模型(LLMs)推理面 P 检索增强生成(RAG)优化策略篇 进阶专题 P+ 大模型(LLMs) 强化学习面 P+ 大模型(LLMs) 强化学习——PPO面 P+ 大模型(LLMs)微调面 P+ 大模型(LLMs)评测面 P+ 大模型(LLMs) LLM生成SFT数据方法面 深度优化模块 P+ 大模型(LLMs) 增量预训练篇 P+ 大模型(LLMs) 参数高效微调(PEFT)面 P+ 大模型(LLMs) 易存问题面 P+ 大模型(LLMs) 许集面 P+ 大模型(LLMs) RAG—关键痛点及 P+ LLMs 推理性能面 P+ 大模型(LLMs) 强化学习——RLET ... ...
内容概要:本文通过对经典ACM竞赛题目——最短路径问题的研究,全面介绍了Dijkstra算法的工作原理及其实现方式,并展示了这一算法如何在现代交通导航系统中应用。文章分为多个章节详细解读背景需求、算法选择、数据结构、代码实现、测试与性能验证、优化措施等,特别强调了将抽象算法转换成实用程序的能力培养。 适合人群:有兴趣参加ACM竞赛的学生或者从事算法研究的专业人士;对图形学、图论和路径查找算法感兴趣的开发人员和技术爱好者。 使用场景及目标:①理解和实践ACM算法题目的处理流程;②掌握最短路径求解方法及具体编码技巧;③学习如何评估算法性能并进行适当优化。 其他说明:文中还提供了详细的测试用例,便于读者验证自己写的代码是否符合预期效果,并且讨论了一些可能进一步改进的方向,比如双向Dijsktra或是A*搜索等高级变体版本。
445国产动漫网站,系统包含两种角色:管理员、用户,系统分为前台和后台两大模块,主要功能如下。 【前台功能】 1. 首页:提供用户进入系统的入口。 2. 国漫先驱:用户可以浏览和搜索最新、最热的国产动漫作品。 3. 论坛:用户可以在论坛上进行国产动漫相关的讨论和交流。 4. 国漫之最:展示国产动漫的排行榜,包括评分、点击率等。 5. 历史沿革:介绍国产动漫的发展历程和重要里程碑。 6. 公告信息:发布最新的系统通知、活动公告等信息。 7. 知识窗:提供国产动漫相关的知识、解读和评论。 8. 个人中心:用户可以管理个人信息。 【后台功能】 1. 首页:提供管理员进入后台管理的入口。 2. 个人中心:管理员可以管理个人信息。 3. 管理员管理:添加、编辑、删除系统管理员账号。 4. 基础数据管理:管理系统的基础数据。 5. 国漫先驱管理:添加、编辑、删除国漫先驱信息。 6. 论坛管理:管理论坛板块。 7. 国漫之最管理:编辑国产动漫的排行榜。 8. 历史沿革管理:添加、编辑、删除国产动漫的历史沿革信息。 9. 公告信息管理:发布、编辑、删除系统通知和活动公告。 10. 用户管理:查
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。
姿态机提供了一种用于学习丰富隐式空间模型的顺序预测框架。在这项工作中,我们展示了如何将卷积网络系统地融入姿态机框架,以学习图像特征和图像相关的空间模型,从而完成姿态估计任务。本文的贡献在于隐式地对诸如关节姿态估计等结构化预测任务中变量之间的长程依赖关系进行建模。我们通过设计一个由卷积网络组成的顺序架构来实现这一目标,这些卷积网络直接作用于先前阶段的置信图,从而生成越来越精确的部件位置估计,无需进行显式的图模型式推理。我们的方法通过提供一个自然的学习目标函数来解决训练过程中梯度消失的典型难题,该函数强制执行中间监督,从而补充反向传播的梯度并调节学习过程。我们在标准基准测试(包括 MPII、LSP 和 FLIC 数据集)上展示了最先进的性能,并超越了竞争方法。
SecretPad Kuscia web
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。
台达温度控制器教材PDF档