当前位置: 首页 > news >正文

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配置文件中配置端口号

在这里插入图片描述

★ 运行时发现HTTP服务端口

在这里插入图片描述

要获取Web服务器相关的信息(比如HTTP端口),都可通过WebServer API来获取。▲ 为了获取WebServer实例,通常有两种方式:- A. 定义一个WebServerApplicationContext成员变量,Spring Boot会为之完成依赖注入。接下来即可通过WebServerApplicationContext来获取WebServer- B. 实现一个监听器接口:ApplicationListener<WebServerInitializedEvent>▲ 对于测试用例,其实可以更简单来获取动态端口@LocalServerPort注解即可将HTTP端口动态注入。

代码演示

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

**获取WebServer实例的方法1:**通过WebServerApplicationContext来获取WebServer
在这里插入图片描述

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

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

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

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

在这里插入图片描述

http://www.lryc.cn/news/135960.html

相关文章:

  • 会计如何使用ChatGPT提高工作效率
  • 【TypeScript】类型推论和类型别名
  • 字节码调教的入口 —— JVM 的寄生插件 javaagent 那些事
  • Blender卡通着色入门
  • 性能调优篇 一、Jvm监控及诊断工具-命令行篇
  • Docker部署MongoDB 5.0.5
  • Day18-2-地狱回调-Promise-async-await技术
  • echarts范围限制下性能问题
  • wazuh环境配置以及案例复现
  • 解决el-select回显异常 显示option选项的value 而不是显示label
  • 【【STM32-SPI通信协议】】
  • 板卡常用前端 数据表操作
  • 基于AVR128单片机世界电子时钟的设计
  • Electron学习2 使用Electron-vue和Vuetify UI库
  • Java“牵手”根据商品分类ID获取速卖通商品分类详情页面数据获取方法,速卖通API实现批量商品数据抓取示例
  • QT 使用图表
  • SSRF 服务器端请求伪造
  • shell 05(shell索引数组变量)
  • 爬虫异常处理:异常捕获与容错机制设计
  • Python自动化小技巧21——实现PDF转word功能(程序制作)
  • Vue使用Element的表格Table显示树形数据,多选框全选无法选中全部节点
  • SpringBoot生成和解析二维码完整工具类分享(提供Gitee源码)
  • Redis的基本知识(偏八股)
  • react使用antd的table组件,实现点击弹窗显示对应列的内容
  • c++代码代码逻辑走查
  • CSS scoped 属性的原理
  • git 查看某个分支是从哪个分支拉出来的
  • vue helloworld.vue 点击按钮弹出 dialog,并给dialog传值
  • html动态爱心代码【三】(附源码)
  • mmseg——报错解决:RuntimeError: CUDA error: an illegal memory access was encountered