欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring boot 无端口模式启动

程序员文章站 2022-05-04 12:51:37
...

背景

在服务架构中,有些springboot工程只是简单的作为服务,并不提供web服务。或者并不提供对外的访问服务,这个时候我们只想能以后台进程去运行,因为项目只是作为客户端去做一些操作系统或者去请求其他任务的事情,并不想要启动端口。

我们以Spring Boot (v2.3.3.RELEASE)为例进行讲解。

实现无端口启动

网上说如果要无端口模式,分web项目和非web项目来处理。如果是非web项目就把下面的依赖去掉。

       <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

对于Sring Boot来讲,我们觉得没必要去除依赖(当然你也可以去掉依赖),就可以让进程常驻内存。具体步骤如下:

(1) 首先我们正常的新建Spring Boot web项目。

(2)修改配置文件: application.properties

# 无端口模式启动web项目
spring.main.web-application-type=none

到处为止,我们启动Spring Boot的时候会自动关闭。因为没有去执行所以就结束了。所以我们可以使用定时任务,从而让它常驻进程并且不启动端口

(3)添加定时任务从而让它常驻进程。(启一个定时任务不做任何事情是为了让进程能常驻内存)

package yeyese.noport.task;

import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;

import java.time.LocalDateTime;

@Configuration      //1.主要用于标记配置类,兼备Component的效果。
@EnableScheduling   // 2.开启定时任务
public class SaticScheduleTask {
    //3.添加定时任务
    @Scheduled(cron = "*/30 * * * * ?")

    //或直接指定时间间隔,例如:5分钟
    private void configureTasks() {

        System.err.println("测试无端口模式启动,然后执行定时任务: " + LocalDateTime.now());
    }

}

验证

到此,我们看到进程常驻了,并且没有启动端口。

Spring boot 无端口模式启动

我们放到Linux服务器上去跑一下看看:

#ps -ef |grep java      
www        6616      1  6 15:00 ?        00:00:03 java -jar noport-0.0.1-SNAPSHOT.jar
root       6689   6670  0 15:01 pts/0    00:00:00 grep --color=auto java

#netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd           
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1069/sshd           
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd           
tcp6       0      0 :::22                   :::*                    LISTEN      1069/sshd           

 

相关标签: Spring Boot