为什么Springboot调用main()方法后程序会一直运行

基于JDK8的SpringBoot-2.7.6应用程序的jar包能直接通过java -jar 命令运行的原因 Spring Boot Maven 插件在 Apache Maven 中提供 Spring Boot 支持。它允许您打包可执行的 jar 或战争存档、运行 Spring Boot 应用程序、生成构建信息并在运行集成测试之前启动 Spring Boot 应用程序。该插件可以创建包含应用程序所有依赖项的可执行存档(jar 文件和 war 文件),然后可以使用 “java -jar”命令运行应用程序。 阅读详情

因为调用Main方法运行以后JVM不是立马结束退出,取决于是否有进程一直在运行。

常见的普通的Main方法里若有while(true),也是不会退出的。

springboot本质上也是这个原理,springboot用tomcat容器运行,tomcat运行之后有个initialze方法,里面有一个while(stopAwait),一直在检查,因此并不会退出。

SpringBoot启动流程:从main方法到应用运行的全过程 开发者可以通过多种方式自定义SpringBoot的启动过程,如实现ApplicationContextInitializer、ApplicationListener、CommandLineRunner等接口,或者编写自定义的BeanFactoryPostProcessor和BeanPostProcessor。/*** 自定义ApplicationRunner示例*/@Component@Overridelogger.info("应用启动完成,执行初始化操作..."); 阅读详情

相关推荐

用Verilog在FPGA上做个电子琴:从矩阵键盘到蜂鸣器的完整实现(附代码)

本文详细介绍了如何使用Verilog在FPGA上实现一个完整的电子琴系统,涵盖矩阵键盘扫描、音调生成和蜂鸣器驱动等核心模块。通过模块化设计和PWM调制技术,开发者可以构建一个可交互的音乐播放器,项目代码完整且易于扩展,适合FPGA初学者和数字逻辑设计爱好者实践。

weixin_29191669的博客 403

SpringBoot为什么运行main方法后可以一直运行

SpringBoot为什么运行main方法后可以一直运行

Keep It Simple Stupid 2798

毕设分享|基于16单片机的指纹识别电子密码锁设计

我们今天的工作生活中,很多的场合都需要身份的认证,而传统的基于标志的身份认证技术由于受到证件伪造以及密码破解等手段的威胁,逐渐表现得有些力不从心。怎样保护自己的重要文件资料,如何保证自己的隐私不被泄露?在传统的身份认证中,我们往往使用密码加密法,但是这种方法只是"防君子不防小人"。在高明的黑客眼里,由几个字符组成的密码脆弱得不堪一击。现在,科技的发展让我们有了新的选择——生物识别技术。将生物识别技术应用于笔记本、门锁等方面,可以对文件、财产起保护作用,并且可以进行身份识别。

Sen_091的博客 1021

为什么我的springboot项目一直run 停不下来了

今天在运行自己的项目的时候发现自己的项目一直run个不停 一直在运行加载中 没有出结果 这时你就要查一下自己的数据库配置 可能你配置错了 密码 或者其他信息 , 那么他就会一直在连接数据库 并且连接不到数据库 所以就run个不停啦 ...

m0_55943900的博客 2163

避坑指南:STM32定时器测PWM频率占空比时,那些CubeMX没告诉你的细节(蓝桥杯真题衍生)

本文深入解析STM32定时器测量PWM频率和占空比时的关键细节,揭示CubeMX配置中未明确的时钟树原理和输入捕获机制。针对蓝桥杯嵌入式赛题中的常见问题,提供动态调整预分频器、多采样数字滤波等实战解决方案,帮助开发者避免测量误差,提升PWM测量精度和稳定性。

weixin_28692153的博客 340

电子系统设计与创新实践作品:简易电子琴

题目 4:简易电子琴 (1)具有8个音阶按键,每个音阶按键频率如表1所示。 (2)每个按键对应LED显示。 (3)音阶信号经功放连接8欧姆扬声器,输出功率可达1W。 (4)每个音阶输出音量一样。 (5)扬声器输出音量可调节,音量调节分为高、中、低三档,并进行档位显示。

weixin_47510497的博客 2860

为什么Springboot Main方法运行完成后不会自动关闭

文章开始前。先看一篇知乎文章。 在熟悉了一些知识后,再看这篇文章。 有了这两篇文章,估计就能明白,为什么对于Web容器(这里yi)来说,

kanyun123的博客 3721

YOLO11改进|YOLO11中引入注意力和卷积融合模块CAFMAttention

YOLO11改进|YOLO11中引入注意力和卷积融合模块CAFMAttention

A1983Z的博客 1225

Java中,main线程结束,程序会停止吗?

但如果还有守护线程在运行,程序将继续执行,直到所有守护线程也结束。需要注意的是,当程序终止时,所有正在执行的线程都会被中断,并且不会完全执行完毕。因此,在设计多线程程序时,需要确保所有的线程能够正确地终止,以避免资源泄露和其他潜在的问题。守护线程是为其他线程提供服务的线程,当所有用户线程都结束时,守护线程会自动退出。例如,垃圾回收器线程就是一个守护线程,它在后台运行,负责回收不再使用的内存。相反,程序会继续执行,直到所有非守护线程都结束。方法结束后立即停止程序,可以将所有的非守护线程设置为守护线程。

学亮编程手记 1865

YOLOv11【第一章:零基础入门篇·第1节】YOLOv11核心架构深度解析与环境配置,一文搞定!

🏆 本文收录于专栏 《YOLOv11实战:从入门到深度优化》。 本专栏围绕 YOLOv11 的改进、训练、部署与工程优化 展开,系统梳理并复现当前主流的 YOLOv11 实战案例与优化方案,内容目前已覆盖 分类、检测、分割、追踪、关键点、OBB 检测 等多个方向。

**My Coding Family** 5514

通用抓取————6D位姿估计

这意味着算法在没有物体的先验知识(如 CAD 模型)的情况下,依然能够通过神经网络捕捉物体的外观、形状和几何特征,生成相关的 6D 位姿估计。通过输入物体类别的描述,算法能够推断出该类别物体的位姿和尺度,无需特定物体的 CAD 模型。在这个坐标空间中,物体的位姿和尺度都是已知的,基于这个标准化表示,算法可以对输入图像中的物体进行 6D 位姿和尺寸的估计。○优势: ICP 是一种非常有效的位姿优化算法,特别适合精细调整物体的位姿,确保最终估计的位姿与真实物体的点云或模型高度一致。

具身机器人和通用AI 2385

springboot置顶上移下移功能实现

关于置顶上移下移功能 sql实现: -- 注意:以下是通过desc顺序示例的,如果是asc,下面sql取反 一、-- 注意:全表desc的sql示例: --mysql查询方式: select * from column_manage where id>4 ORDER BY id asc LIMIT 1 -- 上移 select * from column_manage where id<4 ORDER BY id desc LIMIT 1 -- 下移 select * from c

m0_49844045的博客 2207

Mstar的Monitor方案OSD 菜单制作(五)——icon绘制

Mstar的Monitor方案(五)————绘制icon

android 系统定制开发那些事 1807

Spring Boot 非web应用程序

在 Spring Boot 框架中,要创建一个非Web应用程序(纯Java程序)

qq_48501521的博客 1115

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

springboot启动过程

同时,通过实现ApplicationListener接口或添加@EventListener注解,可以监听应用程序中的特定事件,并在事件发生时执行相应的逻辑。在SpringApplication.run()方法中,会创建一个SpringApplication对象,并调用其run()方法来执行启动流程。监听器:通知监听器应用程序启动开始,创建环境对象environment,用于读取环境配置,如application.yml或application.properties文件。

猿脑2.0的博客 728

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

springboot项目停止关闭socket怎么写

在 Spring Boot 项目中,你可以使用 SpringApplication.exit() 方法来终止应用程序。这个方法会将应用程序的上下文关闭,并且停止所有正在运行的线程。 例如,如果你想要在接收到特定的 HTTP 请求后停止应用程序,你可以在控制器方法中调用 SpringApplication.exit() 方法: @RestController public class MyContr...

weixin_35756892的博客 462

springboot中通过main方法调用service,dao (1)

大多数情况下,我们使用springboot是创建一个web项目,然后通过接口访问,但是也有特殊情况,比如线上跑着的web项目,有一些特殊的数据,需要经过计算导入到数据库,这个时候,我们可能需要原来的web项目中的一些service,dao才辅助操作,但是又不能在服务端新开接口。我们通过springboot的main方法执行这些操作。 此时,service和到需要通过上下文获得。 import or...

Jerry-blog 2万+

为什么SpringBoot中main方法执行完毕后程序不会直接退出

针对这个问题我们可以转化一下思路:一个JVM进程,在什么情况下会正常退出? 大部分人应该都知道使用System.exit()或Runtime.exit()可以直接导致当前JVM进程退出,但是仔细想想这个好像跟SpringBoot没啥关系哈 另外一个可能会导致进程退出的是所有的非daemon进程完全终止,那么根据这个条件反推的话是不是说只要保证SpringBoot进程中包含1个以上的daemon进程就可以保证程序不会退出 接下来我们去看下SpringBoot是如何基于这个特性实现的 我们以Spring

追逐消失的记忆 5250

为什么SpringBoot中main方法执行完毕后程序不会直接退出呢

正常情况下我们main方法执行结束后,该进程就结束了。那为什么springboot main函数执行完不会退出呢?针对这个问题我们可以转化一下思路:一个JVM进程,在什么情况下会正常退出?

s_156的博客 822

解决方法:springboot在启动类main方法中调用service层方法报“空指针异常“

因需要将springboot工程打包成jar包运行,因此需要将controller中的接口直接写在启动类的main方法中,启动即执行。按照常规service方法调用实现,报错如下: debug调试发现,是service注入为空,所以报空指针异常。 解决方法: 1、首先建立一个Spring工具类:SpringUtil import org.springframework.beans.BeansException; import org.springframework.context.ApplicationC

YuanLuo0911的博客 5070

第 4 节 基于 main 方法启动 SpringBoot 进程

1 静态 main 方法与 JVM 进程的关系 ​ 在讲解 SpringBoot 项目的启动和运行之前,首先分析一下基于静态 main 方法启动运行 Java 类的相关知识,以便读者能够更好理解基于 SpringBoot 框架搭建的项目的启动和运行方式。 1.1 基于静态 main 方法执行 Java 类 ​ Java 类的静态 main 方法是每一个 Java 开发人员都再熟悉不过的一个方法,在进行 Java 应用程序开发,特别是 Java SE 应用程序开发时,一般都会在 Java 类定义一个静态 ma

源码之下,了无秘密 3127

SpringBoot中main方法注入service

参考该文章 在springboot中使用main方法常规无法注入service,因为以后也可能会有这种情况,所以采取工具类的方式进行,该工具类为固定写法,直接复制就行 @Component public class SpringContextUtil implements ApplicationContextAware { private static ApplicationCont...

llzmlt的博客 8157

源码浅析:SpringBoot main方法结束为什么程序不停止

前言 对于Java开发来说,天天都在用SpringBoot,每次启动都执行了main方法,该方法应该是最容易让人忽视的地方之一,不过几行代码,为什么执行完后JVM不结束呢? 本文以内嵌tomcat为例进行说明,并分享一些debug和画图的技巧。 原因 先说结论,是因为main方法启动了一个线程,这个

cmdos的专栏 133

SpringBoot main方法分析

Spring整合MyBatis 在了解SpringBoot的main方法之前,先看一下Spring整合Mybatis的例子,首先对于Spring整合Mybatis,对于Spring的配置文件可以通过 .xml 或 配置类 的形式,这里不做详细介绍。 项目结构 Spring的main方法 public class Test { public static void main(String[] args) throws Exception { ApplicationContext context =

qq_46337496的博客 3183

springboot在main方法中调用service

一般我们测试自己的mybatis是否能正常读取数据库,需要在main方法中调用service,解决方案如下: 遇到报错,加上@ComponentScan("com.aiccms.system.*")注解问题解决。读者可根据自身环境去加注解。 package com.aiccms.system.util; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationCont

编程研究坊的博客 9325
上一篇: 什么是数据存储过程
下一篇: JVM内存模型与JAVA内存模型
黄金分割律
博客等级 码龄4年 61粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值