精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

SpringBoot3.3 中如何實現多端口監聽

開發 前端
Spring通過本文的詳細講解,我們學習了如何在 SpringBoot 中實現多端口監聽。這一功能在處理不同類型的請求或暴露多個服務接口時非常有用。我們通過配置 application.yml 文件和編寫自定義配置類,結合前端展示,實現了這一功能。

在 SpringBoot 應用中,通常情況下,我們只需要監聽一個端口來處理 HTTP 請求。但在某些情況下,我們可能需要在同一個應用中監聽多個端口,例如分別處理不同類型的請求,或者在同一個應用中暴露多個服務接口。本篇文章將詳細講解如何在 SpringBoot 中實現多端口監聽,并結合代碼示例進行深入講解。

運行效果:

圖片圖片

若想獲取項目完整代碼以及其他文章的項目源碼,且在代碼編寫時遇到問題需要咨詢交流,歡迎加入下方的知識星球。

項目環境與依賴配置

首先,我們需要創建一個 SpringBoot 項目,并確保項目中包含必要的依賴。以下是 pom.xml的配置:

<?xml versinotallow="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>3.3.3</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.icoderoad</groupId>
	<artifactId>multi-port-demo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>multi-port-demo</name>
	<description>Demo project for Spring Boot</description>
	
	<properties>
		<java.version>17</java.version>
	</properties>
	<dependencies>
		
		<!-- Spring Boot Web Starter -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        
        <!-- Thymeleaf 依賴 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

配置多端口監聽

在 SpringBoot 中,通過配置 application.yml 文件可以輕松實現多端口監聽。以下是配置示例:

server:
  port: 8080 # 主端口

# 額外的端口配置
additional-ports:
  - 8081
  - 8082

編寫配置類實現多端口監聽

在配置文件中指定了額外的端口后,我們需要編寫一個配置類,使用 Spring 的 EmbeddedWebServerFactoryCustomizer 來實現多端口監聽。我們在 MultiPortConfig 類中為每個端口配置一個獨立的 Spring 上下文。

package com.icoderoad.multi_port_demo.config;

import org.apache.catalina.connector.Connector;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MultiPortConfig {

    @Bean
    public ServletWebServerFactory servletWebServerFactory() {
        TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
        factory.addAdditionalTomcatConnectors(createConnector(8081)); // Add additional port 8081
        factory.addAdditionalTomcatConnectors(createConnector(8082)); // Add additional port 8082
        return factory;
    }

    private Connector createConnector(int port) {
        Connector connector = new Connector(TomcatServletWebServerFactory.DEFAULT_PROTOCOL);
        connector.setPort(port);
        return connector;
    }
}

在這個配置類中,createAndStartContext 方法為 8081 和 8082 端口創建了獨立的 Spring 上下文,每個上下文對應一個配置類(Port8081Config 和 Port8082Config),這些配置類會定義對應端口下的控制器。

為每個端口創建獨立的配置類

現在,我們為每個端口創建獨立的配置類,這些配置類將會注冊相應的控制器。

8081 端口配置類

package com.icoderoad.multi_port_demo.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;

import com.icoderoad.multi_port_demo.controller.Port8081Controller;

@Configuration
@EnableWebMvc
public class Port8081Config {

    @Bean
    public Port8081Controller port8081Controller() {
        return new Port8081Controller();
    }
}

8082 端口配置類

package com.icoderoad.multi_port_demo.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;

import com.icoderoad.multi_port_demo.controller.Port8082Controller;

@Configuration
@EnableWebMvc
public class Port8082Config {

    @Bean
    public Port8082Controller port8082Controller() {
        return new Port8082Controller();
    }
}

這些配置類會在相應的端口上下文中注冊對應的控制器。

控制器類定義

定義控制器類,每個控制器類對應一個端口,之前的控制器定義無需改變:

8080 端口的控制器(保持原有配置)

package com.icoderoad.multi_port_demo.controller;

import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class Port8080Controller {

    @GetMapping("/port8080/service")
    public ResponseEntity<String>  service() {
    	
    	HttpHeaders headers = new HttpHeaders();
        headers.setContentType(org.springframework.http.MediaType.TEXT_PLAIN);
        headers.set(HttpHeaders.CONTENT_TYPE, "text/plain; charset=UTF-8");
        
        return new ResponseEntity<>("端口 8080 的服務數據", headers, HttpStatus.OK);
        
    }
}

8081 端口的控制器

package com.icoderoad.multi_port_demo.controller;

import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class Port8081Controller {

	@CrossOrigin(origins = "http://localhost:8080") // 允許的前端地址
    @GetMapping("/port8081/service")
	public ResponseEntity<String>  service() {
    	
    	HttpHeaders headers = new HttpHeaders();
        headers.setContentType(org.springframework.http.MediaType.TEXT_PLAIN);
        headers.set(HttpHeaders.CONTENT_TYPE, "text/plain; charset=UTF-8");
        
        return new ResponseEntity<>("端口 8081 的服務數據", headers, HttpStatus.OK);
        
    }
}

8082 端口的控制器

package com.icoderoad.multi_port_demo.controller;

import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class Port8082Controller {

	@CrossOrigin(origins = "http://localhost:8080") // 允許的前端地址
    @GetMapping("/port8082/service")
	public ResponseEntity<String>  service() {
    	
    	HttpHeaders headers = new HttpHeaders();
        headers.setContentType(org.springframework.http.MediaType.TEXT_PLAIN);
        headers.set(HttpHeaders.CONTENT_TYPE, "text/plain; charset=UTF-8");
        
        return new ResponseEntity<>("端口 8082 的服務數據", headers, HttpStatus.OK);
        
    }
}

編寫前端頁面

在 src/main/resources/templates 目錄下創建一個簡單的 index.html 頁面,使用 Thymeleaf 和 Bootstrap 進行前端展示。

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>SpringBoot 多端口監聽</title>
   <link  rel="stylesheet">
</head>
<body>
<div class="container">
    <h1 class="mt-5">SpringBoot 多端口監聽示例</h1>
    <p class="lead">此應用監聽多個端口,分別處理不同的請求。</p>
    <p>主端口:8080</p>
    <p>額外端口:8081, 8082</p>
    
    <div class="row">
        <div class="col-md-4">
            <h3>端口 8080 數據</h3>
            <p id="data-8080">加載中...</p>
        </div>
        <div class="col-md-4">
            <h3>端口 8081 數據</h3>
            <p id="data-8081">加載中...</p>
        </div>
        <div class="col-md-4">
            <h3>端口 8082 數據</h3>
            <p id="data-8082">加載中...</p>
        </div>
    </div>
</div>

<script>
    fetch('http://localhost:8080/port8080/service')
        .then(response => response.text())
        .then(data => {
            document.getElementById('data-8080').textContent = data;
        });

    fetch('http://localhost:8081/port8081/service')
        .then(response => response.text())
        .then(data => {
            document.getElementById('data-8081').textContent = data;
        });

    fetch('http://localhost:8082/port8082/service')
        .then(response => response.text())
        .then(data => {
            document.getElementById('data-8082').textContent = data;
        });
</script>
</body>
</html>

視圖控制器實現

在 src/main/java/com/icoderoad/controller 目錄下創建一個簡單的控制器,用于處理 HTTP 請求。

package com.icoderoad.multi_port_demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class IndexController {

    @GetMapping("/")
    public String index() {
        return "index";
    }
}

上述代碼中,我們創建了一個簡單的控制器類,提供了一個主頁和一個返回監聽端口信息的接口。

啟動與驗證

啟動 SpringBoot 應用后,在瀏覽器中訪問 http://localhost:8080、http://localhost:8081 和 http://localhost:8082,你會發現所有端口都可以正常響應請求,說明我們已經成功實現了多端口監聽。

總結

通過本文的詳細講解,我們學習了如何在 SpringBoot 中實現多端口監聽。這一功能在處理不同類型的請求或暴露多個服務接口時非常有用。我們通過配置 application.yml 文件和編寫自定義配置類,結合前端展示,實現了這一功能。

責任編輯:武曉燕 來源: 路條編程
相關推薦

2024-09-02 08:17:18

2024-08-30 11:28:09

2024-09-06 10:05:47

SpELSpring權限

2024-09-03 10:44:32

2024-09-09 11:35:35

2024-03-18 08:48:52

Spring多端認證微服務

2024-09-05 09:35:58

CGLIBSpring動態代理

2013-02-20 09:59:49

負載均衡PuppetNginx

2024-09-13 10:21:50

2024-09-26 09:28:06

內存Spring

2024-10-15 10:38:32

2010-03-17 16:35:11

2024-10-18 11:32:15

2024-10-11 11:46:40

2024-10-16 12:23:55

技巧Spring驗證

2010-09-17 09:40:16

2024-08-26 09:15:55

RedissonMyBatisSpring

2024-09-26 08:48:42

SpringAPITogglz

2010-01-19 10:31:20

思科交換機模塊

2010-07-22 12:48:49

Telnet 1433
點贊
收藏

51CTO技術棧公眾號

在线免费观看a级片| 西西人体一区二区| 精油按摩中文字幕久久| 欧美大片免费久久精品三p| 午夜精品福利电影| 在线观看免费黄网站| 手机在线不卡av| 忘忧草精品久久久久久久高清| 激情懂色av一区av二区av| 国产欧美久久久久久| 国产精品九九九九九| 在线āv视频| 91久久夜色精品国产按摩| 一本大道综合伊人精品热热| 粉嫩av一区二区三区免费观看| 特级西西人体高清大胆| 捆绑调教日本一区二区三区| 国产一区二区三区免费看| 最近2019年手机中文字幕| 国产v亚洲v天堂无码久久久| 青青草在线免费观看| 韩国av一区| 日韩欧美成人午夜| 99草草国产熟女视频在线| 丰满的护士2在线观看高清| 国产精品99久久久久| 操91在线视频| 三日本三级少妇三级99| 老司机在线看片网av| 美国一区二区三区在线播放 | 国产一区二区亚洲| 欧美性猛交xxxx| 国产精品久久久久久久久久久久冷 | 99re成人精品视频| 久久久这里只有精品视频| 伊人av在线播放| 18videosex性欧美麻豆| 国产午夜久久久久| 国产精品综合久久久| jizz国产免费| 亚欧日韩另类中文欧美| 欧美性猛交xxxx乱大交3| 男人草女人视频| 亚洲av综合色区无码一区爱av | 成人黄页毛片网站| 久久噜噜噜精品国产亚洲综合| 国产黄色片在线| 免费看成人哺乳视频网站| 日本高清不卡aⅴ免费网站| 欧美极品色图| 伊人免费在线观看高清版| 天天揉久久久久亚洲精品| 亚洲天堂男人的天堂| av污在线观看| 婷婷综合六月| 国产精品国模大尺度视频| 91精品在线影院| 久久精品国产亚洲av麻豆色欲| 日韩丝袜视频| 日韩av网站大全| 亚洲 激情 在线| 成人在线高清免费| 亚洲夂夂婷婷色拍ww47| 日本一区二区视频| 精品人妻一区二区三区蜜桃 | 国产欧美高清在线| 亚洲xxxxxx| 岛国一区二区在线观看| 日本a级片电影一区二区| 三上悠亚作品在线观看| 美女午夜精品| 欧美日韩不卡视频| 久久视频这里有精品| www 日韩| 99精品视频中文字幕| 精品在线不卡| 国内精品偷拍视频| 性欧美精品高清| 热久久免费视频精品| 成人黄色三级视频| 亚洲高清资源| 精品奇米国产一区二区三区| 熟女少妇精品一区二区| 青青在线精品| 日本道精品一区二区三区 | 麻豆精品视频在线观看| 成人黄色片在线| 精品免费囯产一区二区三区| 综合久久99| 在线观看日韩av| 性欧美成人播放77777| 日韩欧美一级| 欧美日韩www| 天天躁日日躁狠狠躁免费麻豆| 色成人综合网| 亚洲精品在线三区| 人妻换人妻仑乱| 亚洲一区二区三区久久久| 91福利资源站| 亚欧精品在线视频| 日韩在线黄色| 日韩中文在线中文网在线观看| 激情五月婷婷在线| 自拍欧美日韩| 日韩美女视频中文字幕| 亚洲久久在线观看| 亚洲伦理一区| 成人h猎奇视频网站| 无码精品人妻一区二区| www.亚洲精品| 精品国产乱码一区二区三区四区 | 中文字幕精品av| 美女又爽又黄视频毛茸茸| 日韩精品久久久久久久电影99爱| 亚洲女人被黑人巨大进入al| 欧美bbbbb性bbbbb视频| 婷婷精品进入| 国产999在线观看| www.国产精品视频| 国产精品视频一二三区| 亚洲亚洲精品三区日韩精品在线视频| 欧美色视频免费| 99在线热播精品免费| 久久久一二三四| 黄色国产网站在线播放| 色哟哟一区二区在线观看| 国产在线观看免费播放| 成人三级av在线| 亚洲激情在线观看视频免费| 中国av免费看| 欧美黄色精品| 97久久精品国产| av高清一区二区| 国产精品久久99| 亚洲黄色a v| 91麻豆精品| 一区二区中文字幕| 五月婷婷视频在线| aaa国产一区| 久久精品视频16| 成人线上播放| 欧美精品激情在线观看| 国产真实的和子乱拍在线观看| 激情综合色播激情啊| 亚洲自拍欧美色图| 欧美一区二区在线观看视频| 久久综合999| 国产精品h视频| 久久精品超碰| 亚洲国产精品999| 国产伦精品一区二区三区视频女| 天天影视天天精品| 国产美女久久精品| 日本不卡三区| 午夜伊人狠狠久久| 少妇人妻互换不带套| 亚洲男人都懂第一日本| 日韩在线激情视频| 中文字幕在线播出| 中文字幕亚洲一区二区va在线| 色婷婷综合网站| 国产精品99久久精品| 国产自产女人91一区在线观看| www.av日韩| 亚洲影视资源网| 久久久国产欧美| 成人影院在线| 26uuu另类亚洲欧美日本一| 在线观看国产黄| av在线综合网| 国产日韩一区二区在线| 精品一级视频| 在线观看日韩欧美| 国产人妻精品一区二区三区| 久久九九国产精品| 国产精品日韩三级| 欧美一级做一级爱a做片性| 久久精品国亚洲| 男人天堂视频在线| av电影天堂一区二区在线观看| 国产v片免费观看| 国产欧美一区二区三区精品观看| 国产精品自产拍在线观| 欧美人与动牲性行为| 欧美美女网站色| 精品国产成人亚洲午夜福利| 99热这里只有成人精品国产| 97se亚洲综合在线| 国产精品拍拍拍| 欧美久久久久久久久久久久久久| 秋霞影院午夜丰满少妇在线视频| 51精品秘密在线观看| 特黄特色免费视频| 日韩免费视频| aaa级精品久久久国产片| 欧美人xxx| 欧美精品一区二区三区很污很色的 | 亚洲无在线观看| 牛牛精品在线| 日韩精品一区二区视频| 欧美日韩亚洲国产另类| 蜜臀久久久久久久| 欧美久久久久久一卡四| 日韩av黄色| 97在线视频一区| 亚洲国产福利视频| 在线国产电影不卡| 亚洲日本精品视频| 国产成人综合网站| www.99av.com| 好吊视频一区二区三区四区| 日韩久久精品一区二区三区| xx欧美视频| 亚洲男人天堂久| 精品久久久无码中文字幕| 色欧美日韩亚洲| 国产精品99无码一区二区| 国产精品免费视频网站| 久久久久久蜜桃一区二区| 亚洲激情不卡| 国产91porn| 区一区二视频| 欧美日韩在线高清| 加勒比视频一区| 亚洲va久久久噜噜噜久久天堂| 欧美片第一页| 午夜精品一区二区三区在线| 操你啦在线视频| 欧美大片一区二区三区| 一级黄色片视频| 亚洲欧美日本韩国| 精人妻一区二区三区| 开心九九激情九九欧美日韩精美视频电影 | 中文字幕乱码中文乱码51精品| 99re在线精品| 在线观看免费av网址| 98精品视频| 日本在线播放不卡| 亚州av一区| 九九99玖玖| 国产盗摄——sm在线视频| 亚洲成人中文字幕| www.热久久| 日韩欧美在线一区二区三区| 国产精品成人久久| 亚洲免费观看高清完整版在线观看熊| 欧美巨胸大乳hitomi| 国产日产亚洲精品系列| 无码一区二区三区在线| 久久男人中文字幕资源站| 99久久人妻精品免费二区| 成人午夜电影久久影院| 色综合久久久无码中文字幕波多| 激情欧美日韩一区二区| 91高清国产视频| 老色鬼精品视频在线观看播放| 亚洲小视频网站| 国产一区在线视频| 佐山爱在线视频| 成人午夜av在线| 国产男女猛烈无遮挡a片漫画 | 1024成人| 18禁免费观看网站| 美女日韩在线中文字幕| 久久精品国产精品亚洲精品色| 91久久夜色精品国产按摩| 影音先锋亚洲视频| 免费萌白酱国产一区二区三区| 国产精品亚洲综合天堂夜夜| 高清欧美日韩| 97人人做人人爱| 欧美艳星kaydenkross| 国产精品福利网站| 久草在线视频网站| 97免费在线视频| 在线看片福利| 国产精品永久免费观看| 香蕉成人app| 精品一区久久久| 久久亚洲在线| 91亚洲精品国产| 久久精品道一区二区三区| 一区二区三区四区毛片| aaa国产一区| 丁香六月激情综合| 亚洲一区二区四区蜜桃| 中文字幕高清在线免费播放| 香蕉成人啪国产精品视频综合网| 国产寡妇亲子伦一区二区三区四区| 欧美视频精品在线| 日韩欧美在线观看免费| 欧美日韩免费高清一区色橹橹 | 亚洲国产精品女人| 激情五月综合| 久久视频免费在线| 亚洲欧美日韩综合国产aⅴ| 国产一级片自拍| 波多野结衣中文字幕一区二区三区 | 中国一级片黄色一级片黄| 日韩一区二区三| 成人一区二区不卡免费| 久久久久久久久爱| 国产精品成人国产| 九九热久久66| 欧美1区2区3区| 日本在线观看免费视频| 波多野结衣精品在线| 99热6这里只有精品| 国产丝袜欧美中文另类| 亚洲熟女www一区二区三区| 一本一道久久a久久精品综合蜜臀| 国产日韩精品suv| 国产一区二区动漫| 川上优av中文字幕一区二区| 成人黄色av网站| 成人激情电影在线| 日韩中文字幕三区| 成人天堂资源www在线| 国产精品夜夜夜爽阿娇| 色婷婷狠狠综合| 天天摸天天碰天天爽天天弄| 久久中文字幕在线| 国产亚洲欧美日韩精品一区二区三区 | 亚洲日产av中文字幕| 日韩精品一区二区三区四| 麻豆国产一区二区| 亚洲av无码国产精品麻豆天美| 午夜日韩在线观看| www.五月婷| 欧美成人激情视频| 黑人极品ⅴideos精品欧美棵| 国产精品成人一区二区| 亚洲va久久| 777精品久无码人妻蜜桃| 视频一区二区不卡| 99re精彩视频| 日本一二三四高清不卡| 99久久精品国产亚洲| 亚洲精品久久久久久久久久久久 | 成人aaaa| 日韩av片网站| 欧美经典三级视频一区二区三区| 精品一区二区6| 日本韩国精品在线| 韩日在线视频| 欧美精品中文字幕一区| 999色成人| 国产又黄又爽免费视频| 国内精品久久久久影院一蜜桃| 激情五月激情综合| 欧美美女喷水视频| 爆操欧美美女| 成人自拍网站| 一区二区高清| 自拍偷拍亚洲天堂| 亚洲嫩草精品久久| av天堂一区二区三区| 九九精品在线视频| 偷拍视频一区二区三区| 日韩一区二区三区资源| 美女免费视频一区二区| 久久一级免费视频| 欧美一区二区三区小说| 欧美日韩伦理片| 国产精品久久久久久久美男| 97久久超碰| 东北少妇不带套对白| 久久国产日韩欧美精品| 亚洲国产123| 欧美成人女星排行榜| 天堂在线中文网官网| 欧美日韩一区在线观看视频| 久久久久久色| 日韩在线观看免| 欧美不卡一二三| 亚洲妇女成熟| 一区二区免费在线观看| 国产成人日日夜夜| 国产黄色免费观看| 日韩一区二区三区在线播放| 亚洲www免费| 亚洲一区二区免费视频软件合集| 国产精品综合二区| 一本色道久久88| 日韩一级片网址| 日韩福利一区| 日本免费黄色小视频| 91丨九色丨国产丨porny| 久久久久久久久久91| 91精品国产一区二区三区蜜臀| 黄网站在线观| 特级西西444www大精品视频| 免费国产自线拍一欧美视频| 色婷婷国产精品免| 欧美影片第一页| 国产永久av在线| 51国偷自产一区二区三区的来源 | 国产一区二区三区天码| 久久发布国产伦子伦精品| 色婷婷综合久久|