Spring Boot改变默认服务器端口

x33g5p2x  于2022-09-19 转载在 Spring  
字(4.3k)|赞(0)|评价(0)|浏览(565)

在本文中将介绍如何改变spring boot的默认服务器端口。当spring boot应用程序启动时,嵌入式服务器(如Tomcat)以默认端口启动。嵌入式Tomcat默认以8080*端口启动。有很多方法可以改变默认的服务器端口。我们可以使用属性文件、系统变量和java**命令的参数来改变嵌入式servlet容器的设置,如默认服务器端口。我们也可以通过编程来改变嵌入式servlet容器的设置。在属性文件中,我们将server.port属性配置为服务器端口值,并将SERVER_PORT配置为系统变量。现在请看这个例子。

使用属性文件(.properties/.yml)

要使用属性文件改变服务器端口,我们需要配置server.port属性。
a. 在classpath中使用application.properties,如src\main\resources\application.properties

server.port = 8585

服务器将以8585端口启动。要获得随机的服务器端口,请为该属性赋值0。

server.port = 0

现在,spring boot将在一个目前没有被系统中任何服务器使用的端口上启动服务器。
b. 在classpath中使用application.yml,如src\main\resources\application.yml

server:
  port: 8585

服务器将以8585端口启动。对于随机端口,可以指定为0。

server:
  port: 0

使用带有 --server.port 或 -Dserver.port 的 java 命令

假设我们有一个名为my-app.jar的可执行JAR,那么在使用java命令启动spring boot应用程序时,我们可以使用以下参数。
使用**--server.port**

java -jar my-app.jar  --server.port=8585

使用**-Dserver.port**

java -jar -Dserver.port=8585 my-app.jar

服务器将以8585端口启动。

使用带有 --port 或 -Dport 的 java 命令

为了使**--server.port-Dserver.port简短,我们可以删除server关键字,使其成为任何简短的关键字,如--port-Dport**。我们可以使用任何短的关键字。这里我们使用端口作为简短的关键字。为了实现这一点,我们需要在属性文件中配置占位符,如下所示。
使用application.properties

server.port=${port:8282}

使用application.yml

server:
  port: ${port:8282}

如果我们不把端口作为参数,那么默认情况下服务器将以8282开始。如果我们想要不同的端口,那么我们需要在参数中传递想要的端口,如下所示。假设我们有一个名为my-app.jar的可执行JAR。
使用**--端口**

java -jar my-app.jar --port=8585

使用**-Dport**

java -jar -Dport=8585 my-app.jar

服务器将以8585端口启动。

使用SERVER_PORT作为操作系统环境变量

我们可以通过设置SERVER_PORT作为操作系统(如Windows和Linux)环境变量来改变spring boot的默认服务器端口。在我的例子中,我有Windows 7。找到配置环境变量的步骤。
第1步。右键点击电脑图标,然后进入属性->高级系统设置->环境变量,设置变量如下。

SERVER_PORT = 8585

第2步。打开命令提示符并建立项目。假设我们得到一个可执行的JAR作为my-app.jar,然后使用java命令运行它,如下所示。

java -jar my-app.jar

服务器将以8585端口启动。
如果我们想从eclipse控制台运行spring boot应用程序,首先重启eclipse,然后运行该应用程序。

用SpringApplication SERVER.PORT

SpringApplication有一个和setDefaultProperties()一样的方法,用来改变spring boot默认属性。假设我们想改变默认端口,那么我们需要创建一个Map,并将端口放在SERVER.PORT的键上。找到这个例子。
MyApplication.java

package com.concretepage;
import java.util.HashMap;
import java.util.Map;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MyApplication {
	public static void main(String[] args) {
		SpringApplication application = new SpringApplication(MyApplication.class);
		Map&ltString, Object> map = new HashMap<>();
		map.put("SERVER.PORT", "8585");
		application.setDefaultProperties(map);
		application.run(args);
        }     
}

Spring boot将以8585端口启动服务器。

使用嵌入式ServletContainerCustomizer

我们可以改变嵌入式Servlet容器的默认设置,注册一个实现EmbeddedServletContainerCustomizer接口的bean。我们需要覆盖其customize()方法。找到这个例子。
ContainerCustomizerBean.java

package com.concretepage.bean;
import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer;
import org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer;
import org.springframework.stereotype.Component;
@Component
public class ContainerCustomizerBean implements EmbeddedServletContainerCustomizer {
	@Override
	public void customize(ConfigurableEmbeddedServletContainer container) {
		container.setPort(8585);
	}
}

Spring boot将以8585端口启动服务器。

使用环境变量的Eclipse运行配置

我们可以通过在运行配置中配置环境变量来改变eclipse中的spring boot默认设置。
步骤1: 在类上点击右键,进入 "运行为"->"运行配置"。
第二步: 点击环境标签和服务器端口,如下所示。

SERVER_PORT = 8585

找到eclipse的打印屏幕。

第3步。从eclipse控制台运行该应用程序。服务器将以8585端口启动。

使用带有参数的Eclipse运行配置

为了在eclipse中运行spring boot应用程序,我们将包含main()方法的类作为java应用程序运行。要改变默认端口,请按照以下步骤进行。
第1步。在类上点击右键,进入运行方式->运行配置
第2步。点击参数标签,配置服务器端口如下。

--server.port=8585

找到eclipse的打印屏幕。

第3步。从eclipse控制台运行该应用程序。服务器将以8585端口启动。找到控制台的输出。

.   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.5.2.RELEASE)

2017-03-20 20:08:15.851  INFO 3888 --- [           main] com.concretepage.MyApplication           : Starting MyApplication on Renu-PC with PID 3888 (F:\arvind\PROJECT\mars\spring-boot\spring-boot-demo\target\classes started by Renu in F:\arvind\PROJECT\mars\spring-boot\spring-boot-demo)
2017-03-20 20:08:15.856  INFO 3888 --- [           main] com.concretepage.MyApplication           : No active profile set, falling back to default profiles: default
2017-03-20 20:08:15.955  INFO 3888 --- [           main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@57f23557: startup date [Mon Mar 20 20:08:15 IST 2017]; root of context hierarchy
2017-03-20 20:08:17.833  INFO 3888 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8585 (http)

相关文章