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.mzph.cn/news/55654.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Win 11 电脑的 Win + E 快捷键失效

报的错误信息如下&#xff1a; 该文件没有与之关联的应用来执行该操作。请安装应用&#xff0c;若已经安装应用&#xff0c;请在”默认应用设置"页面中创建关联。 报错原因&#xff1a;系统注册表被改写了导致的出错 解决办法&#xff1a; 1、首先&#xff0c;按键盘上…

python编程环境使用技巧2-python环境迁移

Python环境迁移步骤 将Python环境从一个计算机迁移到另一个计算机可以按照以下步骤进行&#xff1a; 1-备份环境&#xff1a; 在源计算机上&#xff0c;使用pip工具备份当前Python环境的包列表到一个文本文件。在命令行终端中执行以下命令&#xff1a; pip freeze > requi…

【韩顺平 零基础30天学会Java】数组、排序和查找(2days)

数组、排序、查找和多维数组 数组可以存放多个同一类型的数据。数组也是一种数据类 型&#xff0c;是引用数据类型。 定义一个数组 double[] hens {3,5,1,3.4,2,50} 遍历数组得到数组所有元素的和 hens[下标]&#xff0c;下标是从0开始编号的。 可以通过数组名.lenght得到数组…

【数据库】使用ShardingSphere+Mybatis-Plus实现读写分离

书接上回&#xff1a;数据库调优方案中数据库主从复制&#xff0c;如何实现读写分离 ShardingSphere 实现读写分离的方式是通过配置数据源的方式&#xff0c;使得应用程序可以在执行读操作和写操作时分别访问不同的数据库实例。这样可以将读取操作分发到多个从库&#xff08;从…

详细手机代理IP配置

嗨&#xff0c;亲爱的朋友们&#xff01;作为一家代理产品供应商&#xff0c;我知道有很多小伙伴在使用手机进行网络爬虫和数据采集时&#xff0c;常常会遇到一些IP限制的问题。别担心&#xff01;今天我要给大家分享一下手机IP代理的设置方法&#xff0c;让你们轻松应对这些限…

vue2 路由入门

一、单页应用程序介绍 1.概念 单页应用程序&#xff1a;SPA【Single Page Application】是指所有的功能都在一个html页面上实现 2.具体示例 单页应用网站&#xff1a; 网易云音乐 https://music.163.com/ 多页应用网站&#xff1a;京东 https://jd.com/ 3.单页应用 VS 多页…

PostgreSQL命令行工具psql常用命令

1. 概述 通常情况下操作数据库使用图形化客户端工具&#xff0c;在实际工作中&#xff0c;生产环境是不允许直接连接数据库主机&#xff0c;只能在跳板机上登录到Linux服务器才能连接数据库服务器&#xff0c;此时就需要使用到命令行工具。psql是PostgreSQL中的一个命令行交互…

38.HiddenHttpMethodFilter

HiddenHttpMethodFilter 由于浏览器只支持发送get和post方式的请求&#xff0c;SpringMVC 提供了 HiddenHttpMethodFilter 帮助我们将 POST 请求转换为 DELETE 或 PUT 请求 HiddenHttpMethodFilter 处理put和delete请求的条件&#xff1a; 当前请求的请求方式必须为&#xff1…

资料与参考

资料&#xff1a; 本书&#xff08;《Python神经网络编程》&#xff09;的资料是使用Jupyter notebooks写的&#xff0c;本人并不擅长使用Jupyter&#xff0c;所以用传统py重写了一遍&#xff0c;并附加了新功能&#xff08;即多数字识别&#xff09;&#xff0c;现将Jupyter版…

一百六十四、Kettle——Linux上脚本运行kettle的转换任务(Linux本地、Linux资源库)

一、目的 在kettle的转换任务以及共享资源库、Carte服务创建好后&#xff0c;需要对kettle的转换任务用海豚调度器进行调度&#xff0c;调度的前提的写好脚本。所以&#xff0c;这篇博客首先介绍在Linux上脚本运行kettle的转换任务 二、前提准备 &#xff08;一&#xff09;…

【PHP】echo 输出数组报Array to string conversion解决办法

代码&#xff1a; <?PHP echo "Hello World!";$demoName array("kexuexiong","xiong");echo "<pre>";var_dump($demoName);echo $demoName; print_r($demoName);echo "</pre>"; ?>输出结果&#xff1…

解释 RESTful API,以及如何使用它构建 web 应用程序

RESTful API&#xff08;Representational State Transfer Application Programming Interface&#xff09;是一种通过 HTTP 协议进行通信的 Web API&#xff0c;它可以用于构建 Web 应用程序、移动应用程序和其他客户端应用程序。RESTful API 是一种基于 REST 架构风格的 API&…

土豆叶病害识别(图像连续识别和视频识别)

效果视频&#xff1a;土豆叶病害识别&#xff08;Python代码&#xff0c;pyTorch框架&#xff0c;视频识别&#xff09;_哔哩哔哩_bilibili 代码运行要求&#xff1a;Torch库>1.13.1&#xff0c;其它库无版本要求 1..土豆叶数据集主要包好三种类别&#xff08;Early_Blight…

自然语言处理(二):近似训练

近似训练 近似训练&#xff08;Approximate Training&#xff09;是指在机器学习中使用近似的方法来训练模型&#xff0c;以降低计算复杂度或提高训练效率。这种方法通常用于处理大规模数据集或复杂模型&#xff0c;其中精确的训练算法可能过于耗时或计算资源不足。 近似训练…

day14 二叉树01 二叉树的遍历

目录 二叉树的前序遍历二叉树的中序遍历二叉树的后序遍历 二叉树的前序遍历 二叉树遍历可以使用迭代和递归实现&#xff0c;代码如下&#xff1a; 递归法&#xff1a; vector<int> ret; void _preorderTraversal(TreeNode* root) {if (root nullptr) return;ret.pus…

机器学习理论笔记(二):数据集划分以及模型选择

文章目录 1 前言2 经验误差与过拟合3 训练集与测试集的划分方法3.1 留出法&#xff08;Hold-out&#xff09;3.2 交叉验证法&#xff08;Cross Validation&#xff09;3.3 自助法&#xff08;Bootstrap&#xff09; 4 调参与最终模型5 结语 1 前言 欢迎来到蓝色是天的机器学习…

【springboot】Spring Cache缓存:

文章目录 一、导入Maven依赖&#xff1a;二、实现思路&#xff1a;三、代码开发&#xff1a; 一、导入Maven依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId><…

《C和指针》笔记8: 枚举类型

枚举 (enumerated)类型就是指它的值为符号常量而不是字面值的类型&#xff0c;它们以下面这种形式声明&#xff1a; enum Jar_Type { CUP, PINT, QUART, HALF_GALLON, GALLON };这条语句声明了一个类型&#xff0c;称为Jar_Type。这种类型的变量按下列方式声明&#xff1a; e…

go语言调用python脚本

文章目录 代码gopython 在 go语言中调用 python 程序&#xff0c;你可能会用到 代码 亲测 go 测试 go 文件 func TestR(t *testing.T) {// 设置要执行的Python脚本和参数scriptPath : "../nansen.py"arg1 : "nansen"// 执行Python脚本cmd : exec.Comm…

lnmp架构-mysql

1.MySQL数据库编译 make完之后是这样的 mysql 初始化 所有这种默认不在系统环境中的路径里 就这样加 这样就可以直接调用 不用输入路径调用 2.初始化 重置密码 3.mysql主从复制 配置master 配置slave 当master 端中还没有插入数据时 在server2 上配slave 此时master 还没进…