动态

详情 返回 返回

SegmentFault 思否技術週刊 Vol.69 — SpringBoot 框架都有哪些優秀的特性? - 动态 详情

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 技術週刊 #

「技術週刊」是社區特別推出的技術內容系列,一週一主題。

每週二更新,歡迎「關注」。大家也可以在評論處留言自己感興趣的主題,推薦主題相關的優秀文章。

如有問題可以添加小姐姐微信~

image.png

user avatar zzd41 头像 assassin 头像 asmallwhitecat 头像 suporka 头像 ohhhcky 头像
点赞 5 用户, 点赞了这篇动态!
点赞

Add a new 评论

Some HTML is okay.