首页 > 其他分享 >如何让spring一直启动不关掉

如何让spring一直启动不关掉

时间:2023-11-10 09:00:40浏览次数:35  
标签:启动 spring SpringApplication class 关掉 context Spring public

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,SpringApplication,class,关掉,context,Spring,public
From: https://www.cnblogs.com/xfeiyun/p/17816523.html

相关文章

  • JVM启动流程和基本结构
    JVM启动流程和基本结构JVM启动流程JVM基本结构详细介绍内存空间作用Java堆(Heap)对于大多数应用来说,Java堆(JavaHeap)是Java虚拟机所管理的内存中最大的一块。Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这......
  • SpringCloud 集成 Sentinel 和使用小结
    Sentinel是阿里的一款微服务请求监控组件,能够通过配置实现流量控制,降级熔断,热点参数限流,授权规则限流,使用非常方便。官方默认只提供了流量控制配置规则持久化代码实现,这也是我们最常用的,上篇博客已经实现并进行了部署。本篇博客基于上篇博客搭建好的Sentinel和Nacos环境,介绍......
  • springboot社区团购管理系统的设计与实现-计算机毕业设计源码+LW文档
    abo开发说明开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:Maven3.3.9浏览器:谷歌浏览器部分数据库:----Tablestructurefortableaddress--DROPTABLEIFEXISTSaddr......
  • springboot科研管理系统-计算机毕业设计源码+LW文档
    摘 要随着计算机技术发展,计算机系统的应用已延伸到社会的各个领域,大量基于网络的广泛应用给生活带来了十分的便利。所以把科研管理与现在网络相结合,利用计算机搭建科研管理系统,实现科研的信息化。则对于进一步提高科研管理发展,丰富科研管理经验能起到不少的促进作用。系统阐述......
  • springboot2 @Mapper注解问题
    @MapperpublicinterfaceDeptMapper{   DeptgetById(Integerid);}问:这段代码是把这个接口注入到spring的bean容器当中去了,但是spring的bean容器不是存的实例化对象吗?答:在Spring框架中,将一个类(或接口)注入到Spring的容器中,即将其声明为一个Bean。这样,Spring容器会负......
  • SpringBoot是如何保证服务启动后不自动停止的
    一般项目执行后,当程序结束会自动关闭程序。但Springboot项目,启动后,只要不发生error错误,一般不会自动停止。这是为什么呢?简单Java阻止停止为了保证一个服务能够持续有效地对外提供服务,一般会有相应的处理方式,比如:服务器上的守护进程脚本但是,在Java代码层面,除了shell脚本之外......
  • Spring Boot中使用RabbitMQ完成延迟功能
    MQ-消息队列简单来说就是将“消息”放到“队列”中,然后慢慢处理队列中的消息。完成延迟功能总体的思路是将消息放到队列中,为消息设置过期时间,不直接处理这个队列中的消息,等到消息过期,将它转到另一个队列进行处理,从而完成延迟功能。基本概念1.队列队列是RabbitMQ的内部对象,用......
  • 强无敌!一个项目涵盖SpringBoot集成各种场景
    大家好,我是Java陈序员。我们都知道,作为Java后端开发肯定绕不开Spring,而SpringBoot的横空出世更是帮助我们开发者可以快速迭代一个项目!SpringBoot之所以强大,是因为支持自动化配置,可以快速装配组件,如持久化框架缓存消息队列日志等等。今天给大家介绍一个SpringBoot集成各种......
  • 第一次将Springboot项目上传到GitLab仓库(初始化)
    步骤:1、在GitLab上创建项目仓库(创建空项目)   创建完成如下: 2、在IDEA中新建一个Springboot项目 使用Git版本集成这里说明一下:1、本机计算机已经安装Git2、IDEA已经集成了Git3、这里使用的IDEA是2021版本(2018版本是VCS),IDEA中文......
  • Spring 缓存注解这样用,太香了!
    作者最近在开发公司项目时使用到Redis缓存,并在翻看前人代码时,看到了一种关于@Cacheable注解的自定义缓存有效期的解决方案,感觉比较实用,因此作者自己拓展完善了一番后分享给各位。Spring缓存常规配置SpringCache框架给我们提供了@Cacheable注解用于缓存方法返回内容。但......