跳到主要內容

發表文章

目前顯示的是 11月, 2020的文章

多應用下 Swagger 的使用,這可能是最好的方式!

問題 微服務化的時代,我們整個項目工程下面都會有很多的子系統,對於每個應用都有暴露 Api 接口文檔需要,這個時候我們就會想到 Swagger 這個優秀 jar 包。但是我們會遇到這樣的問題,假如說我們有5個應用,難道說我們每個模塊下面都要去引入這個 jar 包嗎?我作為一個比較懶的程序感覺這樣好麻煩,於是乎我思考了一種我認為比較好的方式,如果大家覺得有什麼不太好的地方希望指正,謝謝! 基礎 開始之前大家首先要了解一些基礎,主要有以下幾個方面: 單應用下 Swagger 的集成與使用 條件裝配 @Conditional 介紹 配置文件參數獲取 @ConfigurationProperties 單體應用下 Swagger 集成與使用 關於這部分從3方面講起分別是:什麼是、為什麼、如何用 什麼是 Swagger ? Swagger 是一個規範且完整的框架,用於生成、描述、調用和可視化 RESTful 風格的 Web 服務。 為什麼使用 Swagger ? 主要的優點: 支持 API 自動生成同步的在線文檔:使用 Swagger 后可以直接通過代碼生成文檔,不再需要自己手動編寫接口文檔了,對程序員來說非常方便,可以節約寫文檔的時間去學習新技術。 提供 Web 頁面在線測試 API:光有文檔還不夠,Swagger 生成的文檔還支持在線測試。參數和格式都定好了,直接在界面上輸入參數對應的值即可在線測試接口。 缺點的話就是但凡引入一個 jar 需要去了解下原理和使用,對於這個缺點我感覺相比於優點就是大巫見小巫,我簡單看了一下源碼,其實不算太難。 如何使用 Swagger 關於 Swagger 的使用其實也就是3板斧,大家一定很熟悉的; 第一板斧就是引入 jar 包,這裏我使用的是2.9.2版本          <!-- swagger 相關 -->          < dependency >       ...

【Spring】BeanDefinition&PostProcessor不了解一下嗎?

水稻:這两天看了BeanDefinition和BeanFactoryPostProcessor還有BeanPostProcessor的源碼。要不要了解一下 菜瓜:six six six,大佬請講 水稻:上次我們說SpringIOC容器是一個典型的工廠模式 假如我們把Spring比作一個生產模型的大工廠,那麼.class文件就是原材料。而BeanDefinition就是創建模型的模具。不管是傳統的XML還是後面的註解,Spring在啟動的時候都會創建一個掃描器去掃描指定目錄下的.class文件,並根據文件的註解,實現的接口以及成員變量將其封裝一個個的BeanDefinition。 比較重要的屬性有id,class,構造函數封裝類,屬性封裝類,factoryMethod等 在對象初始化之前Spring會完成BeanDefinition對象的解析並將其裝入List容器beanDefinitionNames中,然後開始遍歷該容器並根據BeanDefinition創建對象 菜瓜:sodasinei,BeanDefinition我了解了。它是創建bean的模板,類似於java創建對象依賴的class一樣。那還有兩個很長的單詞是啥呢? 水稻:忽略掉後面老長的後綴,我們看BeanFactory和Bean是不是很親切。PostProcessor被翻譯成後置處理器,暫且我們把它看成是處理器就行 BeanFactory是bean工廠,它可以獲取並修改BeanDefinition的屬性,進而影響後面創建的對象。 Bean就是Spring的對象,這些個處理器才是真正處理bean對象的各個環節的工序,包括屬性,註解,方法 菜瓜:有了模糊的概念,不明覺厲 水稻:來,看demo package com.vip.qc.postprocessor; import org.springframework.beans.BeansException; import org.springframework.beans.MutablePropertyValues; import org.springframework.beans.factory.config.BeanDefinition; impo...