使用Spring Boot将应用程序部署为Windows服务

简介

在开发和部署应用程序时,将应用程序作为Windows服务运行是一种常见的做法。这种方式可以确保应用程序在Windows操作系统启动时自动运行,并在后台持续运行,无需用户登录。Spring Boot是一个流行的Java开发框架,可以轻松地将应用程序打包为可执行的JAR文件。本文将介绍如何使用Spring Boot将应用程序打包为Windows服务,并提供示例代码。

1. 安装WinSW

为了将Spring Boot应用程序打包为Windows服务,我们需要使用一个名为WinSW的开源工具。WinSW是一个开源项目,用于将任何可执行文件(包括Java应用程序)包装为Windows服务。

首先,我们需要下载WinSW。可以从官方GitHub仓库(

将下载的winsw.exe文件复制到你的Spring Boot项目的根目录下。

2. 创建WinSW配置文件

接下来,我们需要创建一个WinSW配置文件,该文件将指示WinSW如何将Spring Boot应用程序包装为Windows服务。

在Spring Boot项目的根目录下创建一个名为myapp.xml的XML文件,并使用以下代码填充该文件:

<service>
  <id>myapp</id>
  <name>MyApp</name>
  <description>My Spring Boot application</description>
  <executable>java</executable>
  <arguments>-jar myapp.jar</arguments>
  <stopexecutable>java</stopexecutable>
  <stoparguments>-jar myapp.jar --spring.lifecycle.exit.timeout=5</stoparguments>
  <logmode>rotate</logmode>
</service>

在这个配置文件中,我们指定了服务的ID(id),名称(name)和描述(description)。executablearguments标签指定了启动应用程序的命令和参数。stopexecutablestoparguments标签指定了停止应用程序的命令和参数。logmode标签指定了日志文件的旋转模式,这里使用了rotate模式。

3. 打包Spring Boot应用程序

现在,我们需要使用Spring Boot Maven插件将应用程序打包为可执行的JAR文件。

在Spring Boot项目的根目录下的pom.xml文件中,添加以下配置:

<build>
  <plugins>
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
  </plugins>
</build>

这个配置将启用Spring Boot Maven插件,并允许我们使用mvn package命令来构建可执行的JAR文件。

运行以下命令构建项目:

mvn package

这将在项目的target目录下生成一个名为myapp.jar的可执行文件。

4. 安装Windows服务

现在,我们准备好将应用程序安装为Windows服务了。

打开命令提示符并导航到Spring Boot项目的根目录。

运行以下命令将应用程序安装为Windows服务:

winsw install

这将使用之前创建的myapp.xml配置文件将应用程序安装为Windows服务。

5. 启动和停止Windows服务

安装完成后,我们可以使用以下命令来启动和停止Windows服务:

启动服务:

winsw start

停止服务:

winsw stop

6. 卸载Windows服务

如果不再需要将应用程序作为Windows服务运行,可以使用以下命令将其卸载:

winsw uninstall

总结

通过使用WinSW工具,我们可以将Spring Boot应用程序打包为Windows服务,以实现在Windows操作系统下自动启动和持续运行的功能。在本文中,我们介绍了安装WinSW、创建WinSW配置文件、打包Spring Boot应用程序并安装、启动、停止和卸载Windows服务的步骤。希望这篇科普文章对你有所帮助!

参考资料

  • WinSW GitHub仓库: