国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

SpringBoot隨機(jī)端口啟動(dòng)的實(shí)現(xiàn)

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

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

a. 指定端口范圍為8000-65535b. 識(shí)別端口是否使用,已被使用則繼續(xù)隨機(jī)產(chǎn)生c. 如果全部端口不可使用則直接拋出錯(cuò)誤,中斷運(yùn)行

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();// 最大嘗試次數(shù)為端口范圍int maxRetryCount = MAX_PORT - MIN_PORT;while (maxRetryCount > 0) {// 指定范圍內(nèi)隨機(jī)端口,隨便寫的算法,根據(jù)自己需要調(diào)整 int port = random.nextInt(MAX_PORT - MIN_PORT) + MIN_PORT; boolean isUsed = isLocalePortUsing(port); if (!isUsed) {return String.valueOf(port); } --maxRetryCount;}System.out.println('系統(tǒng)暫無端口可用,運(yùn)行結(jié)束');System.exit(1);return null; } /** * 檢查給定端口是否可用 * * @author tianxincode@163.com * @since 2020/10/14 */ public static boolean isLocalePortUsing(int port) {try { // 建立一個(gè)Socket連接, 如果該端口還在使用則返回true, 否則返回false, 127.0.0.1代表本機(jī) new Socket(InetAddress.getByName('127.0.0.1'), port); return true;} catch (Exception e) { // 異常說明端口連接不上,端口能使用}return false; }}

創(chuàng)建StartCommand.java命令類,調(diào)用隨機(jī)端口功能獲取端口信息,然后將端口信息寫入運(yùn)行環(huán)境中a. 如果傳入的參數(shù)包含了端口則使用指定的,否則使用自動(dòng)生成

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); }}

在啟動(dòng)類啟動(dòng)前向環(huán)境寫入端口信息

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); }}

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

server: # 隨機(jī)端口配置 port: ${auto.port}

項(xiàng)目測試 正常啟動(dòng)項(xiàng)目,可以在控制臺(tái)看到啟動(dòng)的端口信息

SpringBoot隨機(jī)端口啟動(dòng)的實(shí)現(xiàn)

SpringBoot隨機(jī)端口啟動(dòng)的實(shí)現(xiàn)

二、SpringBoot多實(shí)例運(yùn)行

SpringBoot的多實(shí)例運(yùn)行在IDEA中配置如下

SpringBoot隨機(jī)端口啟動(dòng)的實(shí)現(xiàn)

SpringBoot隨機(jī)端口啟動(dòng)的實(shí)現(xiàn)

然后在啟動(dòng)上run/debug啟動(dòng)即可

到此這篇關(guān)于SpringBoot隨機(jī)端口啟動(dòng)的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)SpringBoot隨機(jī)端口啟動(dòng)內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 99久久精品国产亚洲 | 波多野结衣视频在线 | 三级黄色片在线免费观看 | 国产在线综合一区二区三区 | 日本特黄特色大片免费视频网站 | yellow中文字幕久久网 | 中文在线观看视频 | 天天噜夜夜操 | 99久久国产综合精品国 | 黄色在线网站 | 欧美国产合集在线视频 | 久久久精品久久久久三级 | 欧美日韩精品国产一区在线 | 亚洲在线中文字幕 | 韩国免费毛片在线看 | 亚洲欧洲精品国产二码 | 手机看片自拍日韩日韩高清 | 国产欧美日韩亚洲 | 99re久久资源最新地址 | 亚洲视频在线观看网址 | 成人在线免费观看视频 | 97婷婷狠狠成人免费视频 | 亚洲国产经典 | 国产成人女人视频在线观看 | 手机成人看片 | 精品国产成人系列 | 成人av手机在线观看 | 成人午夜久久 | 美国一级毛片片免费 | 国产高清第一页 | 久久免费公开视频 | 亚洲图片视频在线观看 | a毛片全部播放免费视频完整18 | 亚洲素人在线 | 亚洲男人a天堂在线2184 | 台湾久久| 国产精品亚洲精品一区二区三区 | 伊人久久综合热青草 | 日韩精品免费一区二区 | 日韩中文字幕免费 | 免费欧洲毛片a级视频无风险 |