📜  Spring Boot更改端口

📅  最后修改于: 2021-01-11 05:42:38             🧑  作者: Mango

Spring Boot更改端口

Spring Boot框架提供了运行Spring Boot应用程序的默认嵌入式服务器(Tomcat)。它在端口8080上运行。可以在Spring Boot中更改端口。

我们可以使用以下接口和属性文件在Spring Boot中更改端口:

  • 使用application.properties文件
  • 使用application.yml文件
  • 使用EmbeddedServletContainerCustomizer接口
  • 使用WebServerFactoryCustomizer接口
  • 使用命令行参数

使用application.properties文件

如果要更改默认端口,建议您使用application.properties文件。因为这是一种覆盖默认值的简便快捷的方法。我们使用server.port属性覆盖默认属性。

例如,如果我们要将默认端口8080更改为8082,请在application.properties文件中指定属性。

application.properties

server.port=8082

我们还可以将port属性设置为0。它将扫描应用程序的随机端口。每当我们重新启动应用程序时,它都会使用一个新端口。

application.properties

server.port=0

使用application.yml文件

同样,我们也可以使用yml文件更改默认端口。使用application.propertiesapplication.yml文件,这两个文件的工作方式相同。

application.yml

server:
      port:8082

使用EmbeddedServletContainerCustomizer接口

如果您使用的是Spring Boot 1.x版本,它将提供一个接口EmbeddedServletContainerCustomizer来更改默认端口。

EmbeddedServletContainerCustomizer接口

通过使用EmbeddedServletContainerCustomizer,我们可以自定义自动配置的嵌入式Servlet容器。在启动容器本身之前,所有这种类型的Bean都会通过容器工厂获得回调。因此,我们可以设置端口,地址甚至错误页面。它在org.springframework.boot.context.embedded包中定义。

该接口包含一个称为custom()的方法。它允许我们自定义和指定ConfigurableEmbeddedServletContainer 。它解析我们要自定义的称为容器的参数。

句法

void customize(ConfigurableEmbeddedServletContainer container)

ConfigurableEmbeddedServletContainer接口

该接口反映了EmbeddedServletContainerFactory接口(用于创建EmbeddedServletContainers的工厂接口)中的更改。它在org.springframework.boot.context.embedded包中定义。它包含一个用于更改端口的方法,称为setPort()方法。

setPort()方法

setPort()方法配置应侦听嵌入式Servlet容器的端口。当我们不指定端口时,它将使用默认端口8080 。如果要禁用嵌入式服务器的自动启动功能,请使用端口-1 。端口-1表示它将不监听任何端口,而是启动Web应用程序上下文。该方法解析int类型的参数端口(POR t来设置)。

句法

void setPort(int port)

在下面的示例中,我们创建了一个名为ServerCustomizer的类并实现EmbeddedServletContainerCustomizer接口。我们已经重写了customize()方法,并调用了设置端口8097的setPort()方法。

ServerCustomizer.java

@Component
public class ServerCustomizer implements EmbeddedServletContainerCustomizer 
{
@Override
public void customize(ConfigurableEmbeddedServletContainer container) 
{
container.setPort(8097);
}
}

使用WebServerFactoryCustomizer接口

Spring Boot 2.x版本提供了WebServerFactoryCustomizer接口来更改默认端口。它在包org.springframework.boot.web.server中定义。它解析Web服务器工厂类型的参数T。

句法

public interface WebServerFactoryCustomizer

该接口包含一个称为custom()的方法。它允许我们自定义Web服务器工厂。它解析我们要自定义的名为factory的参数。在启动容器本身之前,所有这种类型的Bean都会通过服务器工厂进行回调。因此,我们可以设置端口,地址甚至错误页面

句法

void  customize(T factory)

WebServerFactory接口

它是工厂的标记接口。它在org.springframework.boot.web.server包中定义。它创建一个WebServer

ConfigurableWebServerFactory

它是配置Web服务器工厂的界面。它在软件包org.springframework.boot.web.server中定义。它扩展了WebServerFactoryErrorPageRegistory 。它包含一个用于更改端口的方法,称为setPort()方法。

setPort()

setPort()方法配置应侦听嵌入式Servlet容器的端口。当我们不指定端口时,它将使用默认端口8080 。如果要禁用嵌入式服务器的自动启动功能,请使用端口-1 。端口-1表示它将不监听任何端口,而是启动Web应用程序上下文。该方法解析类型为int的参数端口(要设置的端口)。

句法

void setPort(int port)

注意:此setPort()方法是ConfigurableWebServerFactory接口的

在下面的示例中,我们创建了一个名为ServerCustomizer的类,该类实现了WebServerFactoryCustomizer接口。我们已经重写了customize()方法,并调用了设置端口9001的setPort()方法。

ServerCustomizer.java

@Component
public class ServerCustomizer implements WebServerFactoryCustomizer< ConfigurableWebServerFactory < 
{
@Override
public void customize(ConfigurableWebServerFactory factory) 
{
factory.setPort(9001);
}
}

使用命令行参数

我们还可以使用命令行参数在Spring Boot中更改端口。我们必须遵循以下步骤:

  • 打开任何Spring Boot应用程序。
  • 单击“运行”菜单,然后选择“运行配置”,或右键单击应用程序文件-<运行方式-<运行配置。屏幕上出现“运行配置”窗口。 Spring Boot更改端口屏幕上出现“运行配置”窗口。 Spring Boot更改端口
  • 选择要在其中更改端口的应用程序文件。在我们的例子中,我们想更改SpringBootHelloWorldExampleApplication的端口,因此我们选择了它。
  • 单击参数选项卡。 Spring Boot更改端口
  • 在VM参数字段中输入-Dserver.port = 9001。您可以指定自己的端口,而不是9001。 Spring Boot更改端口
  • 现在,分别单击“应用”“运行”按钮。单击“运行”按钮后,该应用程序开始运行。我们可以看到控制台,以查看在哪个端口服务器上运行,如下所示。 Spring Boot更改端口
  • 打开浏览器并调用URL http:// localhost:9001。它在9001端口上运行该应用程序。 Spring Boot更改端口