📅  最后修改于: 2021-01-11 05:42:38             🧑  作者: Mango
Spring Boot框架提供了运行Spring Boot应用程序的默认嵌入式服务器(Tomcat)。它在端口8080上运行。可以在Spring Boot中更改端口。
我们可以使用以下接口和属性文件在Spring Boot中更改端口:
如果要更改默认端口,建议您使用application.properties文件。因为这是一种覆盖默认值的简便快捷的方法。我们使用server.port属性覆盖默认属性。
例如,如果我们要将默认端口8080更改为8082,请在application.properties文件中指定属性。
application.properties
server.port=8082
我们还可以将port属性设置为0。它将扫描应用程序的随机端口。每当我们重新启动应用程序时,它都会使用一个新端口。
application.properties
server.port=0
同样,我们也可以使用yml文件更改默认端口。使用application.properties或application.yml文件,这两个文件的工作方式相同。
application.yml
server:
port:8082
如果您使用的是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);
}
}
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中定义。它扩展了WebServerFactory和ErrorPageRegistory 。它包含一个用于更改端口的方法,称为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中更改端口。我们必须遵循以下步骤: