Springboot兩要素
為什麼需要有Springboot,我們知道一些指令碼語言框架在web應用開發方面非常方便,比如常見的ROR,Node,php等,而使用tomcat開發一個簡單的hello world的頁面伺服器就需要做很多配置,儘管可以使用之前的SSH web三劍客,但也仍然比較麻煩。Springboot透過開箱即用的元件化的方式簡化了這一切,讓javaer也可以享受到指令碼語言一樣的快速高效。
Springboot如何實現開箱即用的。我們知道Springboot是基於Spring框架,要實現開箱即用,有兩點比較重要,第一,可以自動將元件載入到Spring容器中;第二,提供一種預設配置,同時也可以進行自定義。這樣在引入一個元件之後,系統自動載入程式碼與預設配置,無需任何其他操作就可以直接使用,如何有特殊需求,可以修改配置來進行自定義。
首先第一點,自動載入Bean主要是利用SpringFactoriesLoader,類似Java SPI機制,我們在很多其他地方也常常見到,比如Logger,java中的logging會根據引入的jar包中的logfactory檔案來查詢目前使用的logger框架,同樣,Springboot也會查詢當前路徑下jar中各個starter中的spring.factories檔案,找到每個元件的擴充套件資訊,例如ApplicationContextInitializer,ApplicationListener,EnableAutoConfiguration等,其中EnableAutoConfiguration非常重要,Springboot會將所有的查詢到的EnableAutoConfiguration載入到容器中,這樣可以完成元件的初始化,Bean載入等操作了。其次每個元件會設定一套需要的配置資料後設資料,並且一般都會有一套預設資料,而且使用者還可以在application.properties中進行自定義,最小化簡化使用者配置。
例如如果要為一個RPC框架提供一個Springboot的元件,可以直接引入starter就可以使用,應該如何實現呢。
我們可以為RPC的服務端與消費端分別定義一個註解:@Provider 與@Consumer, 每個註解裡面會有一些服務需要的引數,例如版本號,超時時間等,然後新增一個RPCEnableAutoConfiguration,讓RPCEnableAutoConfiguration中首先初始化RPC需要的一些資訊,例如與地址註冊伺服器的連結等,然後掃描容器中的所有帶有@Provider 與@Consumer中的Bean或者欄位資訊,然後根據每個註解中的資訊生成RPC需要的Bean並註冊到容器,這樣就實現了一個RPC開箱即用的元件了。要達到的效果大致如下:
RPC配置類
服務提供類
作者:真海
連結:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/200/viewspace-2818148/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- springboot使用webSocket的兩種方式Spring BootWeb
- SpringBoot中實現兩級快取Spring Boot快取
- 談springboot兩種實現結構Spring Boot
- SpringBoot實現熱部署兩種方式!Spring Boot熱部署
- SpringBoot 使用ApplicationContext 及 getbean的兩種方式Spring BootAPPContextBean
- 十二要素
- 在springboot中使用Mybatis Generator的兩種方式Spring BootMyBatis
- 聊聊 SpringBoot 中的兩種佔位符:@*@ 和 ${*}Spring Boot
- springboot~ConstraintValidatorContext驗證兩個欄位內容相同Spring BootAIContext
- 實名核驗類API介面推薦,含身份證二要素、運營商要素、銀行卡要素等API
- Springboot啟動了哪些bean?這兩種方式可以獲取Spring BootBean
- 工作溝通十要素
- 遞迴三要素遞迴
- go 程式基本要素Go
- springboot使用者登陸密碼兩次md5加密Spring Boot密碼加密
- MyBatis 與 SpringBoot 整合:註解和xml兩種使用方式介紹MyBatisSpring BootXML
- openlayser 查詢wfs所有要素
- 遞迴演算法要素遞迴演算法
- 百度愛採購打造優勢店鋪的四大要點與兩大要素KUL
- Redis詳解 - SpringBoot整合Redis,RedisTemplate和註解兩種方式的使用RedisSpring Boot
- 身份證如何查驗真偽?C#身份證二要素、三要素介面整合C#
- 安全要素與 STRIDE 威脅IDE
- 理解vue與MVVM三要素VueMVVM
- AI專案成功的4要素AI
- The elements of programming style,好程式的要素
- C 語言程式構成要素
- 基於ArcGIS ModelBuilder的GDB批量分割槽裁剪——可保留原始GDB要素集要素類結構UI
- 3.網路三要素-IP
- 網路要素服務(WFS)詳解
- 商業創新的核心要素
- 資料要素治理研究報告(2022)
- RPG遊戲測試(QA)六要素遊戲
- BPM治理的5個關鍵要素 - leonardo
- ArcPy批量選擇指定屬性的要素
- 讀軟體設計的要素01概念
- 加快資料要素價值轉化TKN
- 建造玻璃溫室的5個要素CTW
- Vue+Openlayer中使用select選擇要素Vue