SpringBoot 基於 Spring4.0 設計,不僅繼承了 Spring 框架原有的優秀特性,而且還通過簡化配置來進一步簡化了 Spring 應用的整個搭建和開發過程。
另外 SpringBoot 通過集成大量的框架使得依賴包的版本衝突,以及引用的不穩定性等問題得到了很好的解決。
SpringBoot 所具備的特徵有:
- 可以創建獨立的 Spring 應用程序,並且基於其 Maven 或 Gradle 插件,可以創建可執行的 JARs 和 WARs;
- 內嵌 Tomcat 或 Jetty 等 Servlet 容器;
- 提供自動配置的 “starter” 項目對象模型(POMS)以簡化 Maven 配置;
- 儘可能自動配置 Spring 容器;
- 提供準備好的特性,如指標、健康檢查和外部化配置;
- 絕對沒有代碼生成,不需要 XML 配置。
本期技術週刊一起了解下 SpringBoot ,歡迎大家閲讀 ~
文章推薦
《我服了!SpringBoot 升級後這服務我一個星期都沒跑起來!》作者:艾小仙
最近由於各方面的原因在準備升級 Spring Cloud 和 Spring Boot,經過一系列前置的調研和分析,決定把Spring Boot 相關版本從 2.1.6 升級到 2.7.5,Spring Cloud 相關版本從 Greenwich.SR1 升級為 2021.0.4。
升級包含基礎的業務服務代碼的升級改造適配,還有就是中間件一堆代碼的改造,上週經歷了一週的修改,用來測試的服務仍然還沒有跑起來,所以這篇文章我會記錄下來這升級過程中的一些問題,由於革命仍未成功,所以這是上篇。
《幾分鐘上線一個項目文檔網站,這款開源神器實在太香了!》作者:macrozheng
今天帶大家體驗了一把 Docsify,使用 Docsify 來搭建文檔網站確實簡單、快捷。對比使用 VuePress 和 Hexo 來搭建文檔,雖然功能沒有那麼強大,但是 Docsify 無需編譯、無需打包部署、修改響應迅速、對 Markdown 文檔無污染這些優點還是值得肯定的。另外 Docsify 除了一些插件配置,其他配置基本可以使用 Markdown 來完成,感興趣的小夥伴不妨嘗試下它!
《Spring Boot 實現接口冪等性的 4 種方案》作者:Java 架構師
在接口調用時一般情況下都能正常返回信息不會重複提交,不過在遇見以下情況時可以就會出現問題,如:
- 前端重複提交表單: 在填寫一些表格時候,用户填寫完成提交,很多時候會因網絡波動沒有及時對用户做出提交成功響應,致使用户認為沒有成功提交,然後一直點提交按鈕,這時就會發生重複提交表單請求。
- 用户惡意進行刷單: 例如在實現用户投票這種功能時,如果用户針對一個用户進行重複提交投票,這樣會導致接口接收到用户重複提交的投票信息,這樣會使投票結果與事實嚴重不符。
- 接口超時重複提交: 很多時候 HTTP 客户端工具都默認開啓超時重試的機制,尤其是第三方調用接口時候,為了防止網絡波動超時等造成的請求失敗,都會添加重試機制,導致一個請求提交多次。
- 消息進行重複消費: 當使用 MQ 消息中間件時候,如果發生消息中間件出現錯誤未及時提交消費信息,導致發生重複消費。
使用冪等性最大的優勢在於使接口保證任何冪等性操作,免去因重試等造成系統產生的未知的問題。
《Springboot 一行代碼實現文件上傳 20 個平台!少寫代碼到極致》作者:程序員小富
文件上傳在平常不過的一個功能,做後端開發的基本都會接觸到,雖然不難可着實有點繁瑣。數據流的開閉、讀取還容易出錯,尤其是在對接一些 OSS 對象存儲平台,一個平台一堆 SDK 代碼看起來亂糟糟的。
下邊給我大家推薦一個工具 Spring File Storage,上傳文件只要些許配置一行代碼搞定,開發效率槓槓的,一起看看是不是有這麼流批!
《從 SpringBoot 啓動,閲讀源碼設計》作者:知了一笑
初學 SpringBoot 框架時,第一次啓動服務,直呼什麼鬼?只需要簡單的幾步配置,幾個核心的註解,就可以快速實現工程的搭建和運行;
雖然從 Spring 框架遷移到 SpringBoot 框架,在初期會有很多的不適應,但是更好用的框架會快速得到認可,從而成為主流的技術選型;
對於大多數的框架或者組件來説,如果使用起來越是簡便,那麼其內部的封裝策略就越是複雜;
比如在 Spring 框架更新到 SpringBoot 版本時,其用法的簡便與內部封裝的複雜性已經形成強烈的對比;再到 SpringCloud 微服務框架時,其封裝邏輯複雜到離譜;
對於服務端的開發來説,繞不開對 Spring 框架的深度學習,如果單純站在源碼閲讀的角度,建議先熟讀 SpringBoot 啓動流程,然後再適當擴展其他源碼塊;
《如何查詢已經執行過的流程信息?》作者:江南一點雨
查詢歷史流程的方式很簡答,如下:
@SpringBootTest
public class HiTest {
@Autowired
HistoryService historyService;
private static final Logger logger = LoggerFactory.getLogger(HiTest.class);
@Test
void test01() {
List<HistoricProcessInstance> list = historyService.createHistoricProcessInstanceQuery().list();
for (HistoricProcessInstance hi : list) {
logger.info("==={},{},{},{},{},{}",hi.getId(),hi.getName(),hi.getStartActivityId(),hi.getStartTime(),hi.getEndActivityId(),hi.getEndTime());
}
}
}
由於我們這是 Spring Boot 項目,所以基本上不需要什麼額外的配置,直接注入 HistoryService 實例即可。
《手把手教大家在 Spring Boot 中處理 flowable 中的用户和組!》作者:
江南一點雨
雖然説我們在實際開發中,很少會直接用到 flowable 中的用户體系,但是,也不太可能完全用不到,畢竟官方設計了這個東西,而存在就必然有其合理性,所以,今天鬆哥還是來和大家聊一聊,在 Spring Boot 項目中,我們如何去添加、刪除、修改一個用户或者組。
問答推薦
關於 SpringBoot 的問題,還有未解決的,歡迎正在閲讀的小夥伴們一起來解決!
- SpringBoot 2.6+上傳文件失敗?
- SpringBoot 怎麼上傳圖片到遠程服務?
- 接入第三方平台時,單點登陸該怎麼實現?
- Springboot 上傳接受文件上傳參數 null,Configuration注入bean 失敗?
- SpringBoot 單元測試 @ConfigurationProperties?
- 如何使用 springboot 動態連接指定地址的 redis?
- springboot 打印所有請求參數,代碼如下,為啥打印出來的是內存地址,並且沒有打印 header 的信息?
# SegmentFault 技術週刊 #
「技術週刊」是社區特別推出的技術內容系列,一週一主題。
每週二更新,歡迎「關注」。大家也可以在評論處留言自己感興趣的主題,推薦主題相關的優秀文章。
如有問題可以添加小姐姐微信~