31、springboot 配置HTTP服务端口及如何通过WebServer实例动态获取项目中的HTTP端口

配置HTTP服务端口及如何通过WebServer实例动态获取项目中的HTTP端口

★ 设置HTTP服务端口:

- server.port或者SERVER_PORT环境变量

——总结来说,其实就是要配置server.port外部配置属性。

▲ 同样遵守如下优先级:
这些都是外部配置源:
测试配置 > 命令行参数 > JSON配置 > 系统属性 > 环境变量 > 配置文件 > 配置类 > 默认属性

▲ 随机HTTP服务端口

server.port = 0即可。

【备注】: 还可将server.port设为-1,这样就关闭了HTTP端口,也就无法对外提供HTTP服务。

代码示例

就是在yml配置文件中配置端口号

31、springboot 配置HTTP服务端口及如何通过WebServer实例动态获取项目中的HTTP端口_第1张图片

★ 运行时发现HTTP服务端口

31、springboot 配置HTTP服务端口及如何通过WebServer实例动态获取项目中的HTTP端口_第2张图片

要获取Web服务器相关的信息(比如HTTP端口),都可通过WebServer API来获取。

▲ 为了获取WebServer实例,通常有两种方式:

- A. 定义一个WebServerApplicationContext成员变量,Spring Boot会为之完成依赖注入。
     接下来即可通过WebServerApplicationContext来获取WebServer

- B. 实现一个监听器接口:ApplicationListener


▲ 对于测试用例,其实可以更简单来获取动态端口

  @LocalServerPort注解即可将HTTP端口动态注入。

代码演示

需求:在项目中获取服务器的动态端口,通过获取WebServer实例来获取动态端口号。

**获取WebServer实例的方法1:**通过WebServerApplicationContext来获取WebServer
31、springboot 配置HTTP服务端口及如何通过WebServer实例动态获取项目中的HTTP端口_第3张图片

获取WebServer实例的方法2:
实现一个监听器接口:ApplicationListener 来获取项目中的动态端口号
先获取WebServer实例,再从WebServer中获取端口号。

通过实现ApplicationListener接口,来实现一个监听器类
接口的参数是泛型 -> WebServerInitializedEvent ,表示这个监听器只监听WebServerInitializedEvent这个事件(web服务器的初始化事件)

@Component: 用于标识一个类作为组件被Spring容器管理
当一个类使用@Component注解时,Spring容器会自动创建该类的实例并将该实例纳入到容器的管理中。

为了让这个springboot项目能够识别到这个监听器,那么就得把这个监听器配置成springboot中的一个bean。
用@Component注解把这个监听器组件变成springboot容器中的bean。
那么项目启动的时候,spring容器就会来检测这个bean,看是否实现了ApplicationListener这个接口,如果发现这个组件有实现这个ApplicationListener接口,就会把这个组件注册成为容器中的监听器

31、springboot 配置HTTP服务端口及如何通过WebServer实例动态获取项目中的HTTP端口_第4张图片

你可能感兴趣的:(springboot,spring,boot,http,后端)