如何让Spring一直启动不关掉
Spring是J2EE应用程序框架,深受java程序员的欢迎,大量的项目都会引入Spring框架。如果是web项目,启动Spring之后,web容器会维持进程持续运行,Spring也就可以一直出于启动状态,但如果是普通的java应用,在启动Spring之后,随着java进程的停止,spring也会停止。那么如何让spring一直启动持续服务呢?
新建测试类
spring-beans.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>
public class SpringApplication {
public static void main(String[] args) {
AbstractApplicationContext context = new ClassPathXmlApplicationContext("spring-beans.xml");
context.start();
}
}
右击选择"Run"运行,从控制台中打印信息可以看到,spring启动之后,进程退出的时候,spring也随之停止了。
有时候,程序作为服务端程序,也需要长时间持续提供服务的,就需要维持进程不能退出。
System.in.read()
通过这句可以让主线程处于等待读入的阻塞状态,没有读入之前,会一直持续阻塞状态,进程就不会退出。
public class SpringApplication {
public static void main(String[] args) throws IOException {
AbstractApplicationContext context = new ClassPathXmlApplicationContext("spring-beans.xml");
context.start();
System.in.read();
}
}
再次运行,从控制台日志可以看出,这次程序一直运行状态,没有退出
通过wait的方式阻塞线程
public class SpringApplication {
public static void main(String[] args) {
AbstractApplicationContext context = new ClassPathXmlApplicationContext("spring-beans.xml");
context.start();
synchronized (SpringApplication.class) {
try {
SpringApplication.class.wait();
} catch (Throwable e) {
}
}
}
}
运行结果同样可以持续不会让spring退出。
标签:
Spring
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现