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中使用Mybatis Generator的兩種方式Spring BootMyBatis
- 聊聊 SpringBoot 中的兩種佔位符:@*@ 和 ${*}Spring Boot
- SpringBoot 使用ApplicationContext 及 getbean的兩種方式Spring BootAPPContextBean
- 專案成功關鍵要素和專案成功關鍵要素
- 實名核驗類API介面推薦,含身份證二要素、運營商要素、銀行卡要素等API
- go 程式基本要素Go
- 工作溝通十要素
- aix儲存概念要素AI
- 工作要素法(轉載)
- IT市場要素初探(轉)
- 遞迴三要素遞迴
- springboot設定cors跨域請求的兩種方式Spring BootCORS跨域
- Springboot啟動了哪些bean?這兩種方式可以獲取Spring BootBean
- openlayser 查詢wfs所有要素
- 遞迴演算法要素遞迴演算法
- 執行力五要素薦
- 專案成功九要素(轉)
- 專案管理的要素(轉)專案管理
- 資訊化的主要物件要素物件
- 傻瓜軟體要素定義
- 理清專案管理要素(轉)專案管理
- springboot使用者登陸密碼兩次md5加密Spring Boot密碼加密
- MyBatis 與 SpringBoot 整合:註解和xml兩種使用方式介紹MyBatisSpring BootXML
- 身份證如何查驗真偽?C#身份證二要素、三要素介面整合C#
- AI專案成功的4要素AI
- 理解vue與MVVM三要素VueMVVM
- 網頁改版7大要素網頁
- 智慧應用的基本要素
- 招標檔案模版及要素
- IT專案中的要素關係
- 網路應用三要素
- PL/SQL基本語法要素(轉)SQL
- Redis詳解 - SpringBoot整合Redis,RedisTemplate和註解兩種方式的使用RedisSpring Boot
- springboot~ConstraintValidatorContext驗證兩個欄位內容相同Spring BootAIContext