电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

SpringBoot隨機端口啟動的實現

瀏覽:90日期:2023-02-24 09:51:24
目錄一、SpringBoot隨機端口1.基礎介紹2.實現步驟二、SpringBoot多實例運行一、SpringBoot隨機端口1.基礎介紹 隨機端口可以自動找指定范圍內可使用的端口,不需要在配置文件中指定固定的啟動端口 例如在SpringBoot中假如需要運行多個實例,則需要單獨修改配置文件比較麻煩 隨機端口的原理就是與對應socket端口建立連接,能連接則已被使用,反之未被使用 隨機獲取的端口校驗可使用之后通過System.setProperty('屬性名稱', port);寫入內存,然后就可以在配置文件中獲取到 如果寫入的名稱為server.port則不用在配置文件中指定端口,否則需要配置server.port=${屬性名稱} 本實踐基于SpringBoot普通工程,直接創建項目腳手架即可 【tip】例如在SpringCloud項目中服務提供者,可以使用隨機端口快速啟動多個服務,而不需要單獨修改配置文件再啟動 2.實現步驟

創建ServerPortUtil .java端口工具類,使用socket連接指定端口,例如有以下條件

a. 指定端口范圍為8000-65535b. 識別端口是否使用,已被使用則繼續隨機產生c. 如果全部端口不可使用則直接拋出錯誤,中斷運行

import java.net.InetAddress;import java.net.Socket;import java.util.Random;public class ServerPortUtil { private static final int MAX_PORT = 65535; private static final int MIN_PORT = 8000; public static String getAvailablePort() {Random random = new Random();// 最大嘗試次數為端口范圍int maxRetryCount = MAX_PORT - MIN_PORT;while (maxRetryCount > 0) {// 指定范圍內隨機端口,隨便寫的算法,根據自己需要調整 int port = random.nextInt(MAX_PORT - MIN_PORT) + MIN_PORT; boolean isUsed = isLocalePortUsing(port); if (!isUsed) {return String.valueOf(port); } --maxRetryCount;}System.out.println('系統暫無端口可用,運行結束');System.exit(1);return null; } /** * 檢查給定端口是否可用 * * @author tianxincode@163.com * @since 2020/10/14 */ public static boolean isLocalePortUsing(int port) {try { // 建立一個Socket連接, 如果該端口還在使用則返回true, 否則返回false, 127.0.0.1代表本機 new Socket(InetAddress.getByName('127.0.0.1'), port); return true;} catch (Exception e) { // 異常說明端口連接不上,端口能使用}return false; }}

創建StartCommand.java命令類,調用隨機端口功能獲取端口信息,然后將端口信息寫入運行環境中a. 如果傳入的參數包含了端口則使用指定的,否則使用自動生成

import com.codecoord.randomport.util.ServerPortUtil;import org.springframework.util.StringUtils;public class StartCommand { /** * 端口屬性名稱,如果名稱為server.port則在配置文件中不用指定,否則需要指定為此處配置的名稱,如${auto.port} */ private static final String SERVER_PORT = 'auto.port'; public StartCommand(String[] args) {boolean isServerPort = false;String serverPort = '';if (args != null) { for (String arg : args) {if (StringUtils.hasText(arg) && arg.startsWith('--server.port' )) { isServerPort = true; serverPort = arg; break;} }}String port;if (isServerPort) { port = serverPort.split('=')[1];} else { port = ServerPortUtil.getAvailablePort();}System.out.println('Current project port is ' + port);System.setProperty(SERVER_PORT, port); }}

在啟動類啟動前向環境寫入端口信息

import com.codecoord.randomport.config.StartCommand;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicatiopublic class SpringbootRandomPortApplication { public static void main(String[] args) {// 寫入端口信息 new StartCommand(args);SpringApplication.run(SpringbootRandomPortApplication.class, args); }}

在配置文件中指定端口為隨機生成的端口信息

server: # 隨機端口配置 port: ${auto.port}

項目測試 正常啟動項目,可以在控制臺看到啟動的端口信息

SpringBoot隨機端口啟動的實現

SpringBoot隨機端口啟動的實現

二、SpringBoot多實例運行

SpringBoot的多實例運行在IDEA中配置如下

SpringBoot隨機端口啟動的實現

SpringBoot隨機端口啟動的實現

然后在啟動上run/debug啟動即可

到此這篇關于SpringBoot隨機端口啟動的實現的文章就介紹到這了,更多相關SpringBoot隨機端口啟動內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
主站蜘蛛池模板: 一体化净水器_一体化净水设备_一体化水处理设备-江苏旭浩鑫环保科技有限公司 | 起好名字_取个好名字_好名网免费取好名在线打分 | 苏州西朗门业-欧盟CE|莱茵UL双认证的快速卷帘门品牌厂家 | 软启动器-上海能曼电气有限公司 真空搅拌机-行星搅拌机-双行星动力混合机-广州市番禺区源创化工设备厂 | 桨叶搅拌机_螺旋挤压/方盒旋切造粒机厂家-无锡市鸿诚输送机械有限公司 | 【365公司转让网】公司求购|转让|资质买卖_股权转让交易平台 | 筒瓦厂家-仿古瓦-寺庙-古建琉璃瓦-宜兴市古典园林建筑陶瓷厂有限公司 | 回转支承-转盘轴承-回转驱动生产厂家-洛阳隆达轴承有限公司 | 四合院设计_四合院装修_四合院会所设计-四合院古建设计与建造中心1 | 天津云仓-天津仓储物流-天津云仓一件代发-顺东云仓 | MVE振动电机_MVE震动电机_MVE卧式振打电机-河南新乡德诚生产厂家 | 螺钉式热电偶_便携式温度传感器_压簧式热电偶|无锡联泰仪表有限公司|首页 | 电抗器-能曼电气-电抗器专业制造商 | 青岛侦探调查_青岛侦探事务所_青岛调查事务所_青岛婚外情取证-青岛狄仁杰国际侦探公司 | 高柔性拖链电缆_卷筒电缆_耐磨耐折聚氨酯电缆-玖泰特种电缆 | 磁力轮,磁力联轴器,磁齿轮,钕铁硼磁铁-北京磁运达厂家 | 聚氨酯保温钢管_聚氨酯直埋保温管道_聚氨酯发泡保温管厂家-沧州万荣防腐保温管道有限公司 | 生产自动包装秤_颗粒包装秤_肥料包装秤等包装机械-郑州鑫晟重工科技有限公司 | 沟盖板_复合沟盖板厂_电力盖板_树脂雨水篦子-淄博拜斯特 | 商秀—企业短视频代运营_抖音企业号托管| 江苏远邦专注皮带秤,高精度皮带秤,电子皮带秤研发生产 | 胜为光纤光缆_光纤跳线_单模尾纤_光纤收发器_ODF光纤配线架厂家直销_北京睿创胜为科技有限公司 - 北京睿创胜为科技有限公司 | 电主轴,车床电磨头,变频制动电机-博山鸿达特种电机 | 南京办公用品网-办公文具用品批发-打印机耗材采购 | 行星搅拌机,双行星搅拌机,动力混合机,无锡米克斯行星搅拌机生产厂家 | 注塑机-压铸机-塑料注塑机-卧式注塑机-高速注塑机-单缸注塑机厂家-广东联升精密智能装备科技有限公司 | 杰福伦_磁致伸缩位移传感器_线性位移传感器-意大利GEFRAN杰福伦-河南赉威液压科技有限公司 | T恤衫定做,企业文化衫制作订做,广告T恤POLO衫定制厂家[源头工厂]-【汉诚T恤定制网】 | 冷水机-冰水机-冷冻机-冷风机-本森智能装备(深圳)有限公司 | 六维力传感器_六分量力传感器_模腔压力传感器-南京数智微传感科技有限公司 | 亚克力制品定制,上海嘉定有机玻璃加工制作生产厂家—官网 | 大型低温冷却液循环泵-低温水槽冷阱「厂家品牌」京华仪器_京华仪器 | BOE画框屏-触摸一体机-触控查询一体机-触摸屏一体机价格-厂家直销-触发电子 | 玻璃瓶厂家_酱菜瓶厂家_饮料瓶厂家_酒瓶厂家_玻璃杯厂家_徐州东明玻璃制品有限公司 | 接地电阻测试仪[厂家直销]_电缆故障测试仪[精准定位]_耐压测试仪-武汉南电至诚电力设备 | LZ-373测厚仪-华瑞VOC气体检测仪-个人有毒气体检测仪-厂家-深圳市深博瑞仪器仪表有限公司 | 厂房出租_厂房出售_产业园区招商_工业地产 - 中工招商网 | 冷却塔减速机器_冷却塔皮带箱维修厂家_凉水塔风机电机更换-广东康明冷却塔厂家 | 缓蚀除垢剂_循环水阻垢剂_反渗透锅炉阻垢剂_有机硫化物-郑州威大水处理材料有限公司 | 浙江筋膜枪-按摩仪厂家-制造商-肩颈按摩仪哪家好-温州市合喜电子科技有限公司 | PC构件-PC预制构件-构件设计-建筑预制构件-PC构件厂-锦萧新材料科技(浙江)股份有限公司 |