日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

SpringCloud微服務又想變回單體怎么辦

來源: 責編: 時間:2024-07-01 17:15:52 149觀看
導讀你好,我是柳岸花開。在當今的企業級應用開發中,微服務架構因其靈活性和可擴展性而受到廣泛歡迎。然而,隨著業務需求的變化和系統復雜度的增加,部分企業開始探索將微服務架構合并為單體應用的可能性。本文將基于兩個實際的

你好,我是柳岸花開。zhZ28資訊網——每日最新資訊28at.com

在當今的企業級應用開發中,微服務架構因其靈活性和可擴展性而受到廣泛歡迎。然而,隨著業務需求的變化和系統復雜度的增加,部分企業開始探索將微服務架構合并為單體應用的可能性。本文將基于兩個實際的Spring Boot配置示例,探討如何實現這一轉變,并分享一些最佳實踐。zhZ28資訊網——每日最新資訊28at.com

背景介紹

微服務架構通過將應用拆分為多個獨立的服務,增強了系統的靈活性和可擴展性。然而,在某些場景下,將這些獨立服務重新整合為單體應用可以簡化部署和維護流程,尤其是在開發和測試環境中。zhZ28資訊網——每日最新資訊28at.com

私有云部署模式的配置

在私有云部署模式下,所有服務和組件都打包在一個JAR包中,進行統一的部署和管理。以下是一個典型的配置示例:zhZ28資訊網——每日最新資訊28at.com

import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.InitializingBean;import org.springframework.boot.autoconfigure.AutoConfigureAfter;import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;@Slf4j@Configuration@ComponentScan(basePackages = {"com.bob.custom"}, nameGenerator = BeanNameGenerator.class)@ConditionalOnDeployMode(mode = DeployModeEnum.MERGE)public class MergeAutoConfiguration {    @Configuration    @AutoConfigureAfter(MergeAutoConfiguration.class)    @ConditionalOnMissingBean(InternalOpenUserController.class)    @ConditionalOnDeployMode(mode = DeployModeEnum.MERGE)    public static class TestDuplicateConfiguration implements InitializingBean {        @Override        public void afterPropertiesSet() {            throw new RuntimeException("In the pre-deployment environment, the controller implementation for the interface was not scanned. Please check if the deploy.mode configuration is correct and confirm if an incorrect scan path is configured in the code @ComponentScan");        }    }}

關鍵點解析

@ComponentScan:掃描并注冊指定包下的組件,如controller、service、mapper等。zhZ28資訊網——每日最新資訊28at.com

@ConditionalOnDeployMode:根據部署模式條件進行配置,僅在DeployModeEnum.MERGE模式下生效。zhZ28資訊網——每日最新資訊28at.com

TestDuplicateConfiguration:檢查關鍵Controller是否存在于IOC容器中,如果缺失則拋出異常提醒配置錯誤。zhZ28資訊網——每日最新資訊28at.com

公有云部署模式的配置

在公有云部署模式下,產品服務通過Feign調用服務提供接口,需要掃描和注冊Feign客戶端,同時避免掃描指定包下的組件。以下是一個典型的配置示例:zhZ28資訊網——每日最新資訊28at.com

import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.InitializingBean;import org.springframework.boot.autoconfigure.AutoConfigureAfter;import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;import org.springframework.cloud.openfeign.EnableFeignClients;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.FilterType;@Slf4j@Configuration@ConditionalOnDeployMode(mode = DeployModeEnum.SPLIT)@EnableFeignClients(basePackages = {"com.bob"})@ComponentScan(excludeFilters = @ComponentScan.Filter(type = FilterType.REGEX, pattern = "com//.bob//..*"))public class SplitAutoConfiguration {    @Configuration    @AutoConfigureAfter(SplitAutoConfiguration.class)    @ConditionalOnBean(InternalOpenUserController.class)    @ConditionalOnDeployMode(mode = DeployModeEnum.SPLIT)    @ConditionalOnMissingBean(name = "platformApiApplication")    public static class TestDuplicateConfiguration implements InitializingBean {        @Override        public void afterPropertiesSet() {            throw new RuntimeException("In the cloud environment, the controller implementation for the interface was found. Please check if the deploy.mode configuration is correct and confirm if an incorrect scan path is configured in the code @ComponentScan");        }    }}

關鍵點解析

  1. @EnableFeignClients:啟用Feign客戶端掃描和注冊。
  2. @ComponentScan:通過排除過濾器避免掃描指定包下的組件。
  3. UcDuplicateConfiguration:在公有云環境中,如果檢測到不應該存在的Controller,則拋出異常提醒配置錯誤。

從微服務到單體的轉變

在私有云部署模式下,通過將所有服務和組件打包在一個JAR包中,我們可以實現將微服務架構合并為單體應用的效果。這種方式簡化了開發和測試環境中的部署和維護流程。然而,在生產環境中,我們仍然可以保持公有云部署模式,通過Feign客戶端進行服務調用,確保系統的靈活性和可擴展性。zhZ28資訊網——每日最新資訊28at.com

總結

通過上述兩種配置方式,我們可以根據不同的部署模式,靈活地調整Spring Boot應用的配置,滿足從微服務到單體的轉變需求。這不僅提高了系統的靈活性和可維護性,也為開發者提供了更多的選擇。在實際開發中,可以根據具體的業務需求和部署環境,進一步優化和擴展這些配置策略,以實現最佳的系統架構。zhZ28資訊網——每日最新資訊28at.com


zhZ28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-97900-0.htmlSpringCloud微服務又想變回單體怎么辦

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 為什么搜索的未來是向量?

下一篇: 2024 熱門前端 UI 組件庫超全匯總!

標簽:
  • 熱門焦點
  • Find N3入網:最高支持16+1TB

    OPPO將于近期登場的Find N3折疊屏目前已經正式入網,型號為PHN110。本次Find N3在外觀方面相比前兩代有很大的變化,不再是小號的橫向折疊屏,而是跟別的廠商一樣采用了較為常見的
  • 在線圖片編輯器,支持PSD解析、AI摳圖等

    自從我上次分享一個人開發仿造稿定設計的圖片編輯器到現在,不知不覺已過去一年時間了,期間我經歷了裁員失業、面試找工作碰壁,寒冬下一直沒有很好地履行計劃.....這些就放在日
  • 一篇文章帶你了解 CSS 屬性選擇器

    屬性選擇器對帶有指定屬性的 HTML 元素設置樣式。可以為擁有指定屬性的 HTML 元素設置樣式,而不僅限于 class 和 id 屬性。一、了解屬性選擇器CSS屬性選擇器提供了一種簡單而
  • 虛擬鍵盤 API 的妙用

    你是否在遇到過這樣的問題:移動設備上有一個固定元素,當激活虛擬鍵盤時,該元素被隱藏在了鍵盤下方?多年來,這一直是 Web 上的默認行為,在本文中,我們將探討這個問題、為什么會發生
  • JVM優化:實戰OutOfMemoryError異常

    一、Java堆溢出堆內存中主要存放對象、數組等,只要不斷地創建這些對象,并且保證 GC Roots 到對象之間有可達路徑來避免垃 圾收集回收機制清除這些對象,當這些對象所占空間超過
  • ESG的面子與里子

    來源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之三伏大幕拉起,各地高溫預警不絕,但處于厄爾尼諾大“烤”之下的除了眾生,還有各大企業發布的ESG報告。ESG是“環境保
  • iQOO 11S評測:行業唯一的200W標準版旗艦

    【Techweb評測】去年底,iQOO推出了“電競旗艦”iQOO 11系列,作為一款性能強機,該機不僅全球首發2K 144Hz E6全感屏,搭載了第二代驍龍8平臺及144Hz電競
  • iQOO 11S或7月上市:搭載“雞血版”驍龍8Gen2 史上最強5G Soc

    去年底,iQOO推出了“電競旗艦”iQOO 11系列,作為一款性能強機,iQOO 11不僅全球首發2K 144Hz E6全感屏,搭載了第二代驍龍8平臺及144Hz電競屏,同時在快充
  • 外交部:美方應停止在網絡安全問題上不負責任地指責他國

      中國外交部今天(16日)舉行例行記者會。會上,有記者問,美國情報官員稱,他們正在阻攔來自中國以及其他國家的黑客獲取相關科研成果。 中方對此有何評論?對此
Top 主站蜘蛛池模板: 芒康县| 洪洞县| 乌什县| 个旧市| 突泉县| 东丽区| 崇礼县| 肇庆市| 万源市| 陇西县| 兴安盟| 长寿区| 平安县| 厦门市| 平原县| 沙洋县| 华安县| 介休市| 孟津县| 嘉祥县| 通渭县| 安庆市| 遂溪县| 甘洛县| 开江县| 河源市| 辉县市| 梁平县| 新巴尔虎左旗| 勃利县| 高雄市| 南华县| 浦县| 富川| 同心县| 柳江县| 喀什市| 建瓯市| 会东县| 海安县| 北安市|