中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringBoot啟動速度慢的原因是什么

發布時間:2023-05-05 10:43:44 來源:億速云 閱讀:97 作者:zzz 欄目:開發技術

這篇文章主要介紹“SpringBoot啟動速度慢的原因是什么”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“SpringBoot啟動速度慢的原因是什么”文章能幫助大家解決問題。

    SpringBoot啟動速度慢的原因

    現在spring boot的架構可以說是非常流行,不會你都不好意思說你是做java的。可是它火歸火,也有一些小問題需要咱們去注意。

    如果是單體項目,并且在啟動速度方面沒有任何要求,那么請忽略。

    下面進入主題,在什么情況下spring boot的項目啟動會變慢呢

    前提條件

    啟動項目的機器硬件配置不能拖后腿,否則你說項目啟動慢,項目還覺得機器不行呢…

    比如網絡,內存大小,CPU核心數等,不要求太高,至少也要夠用吧

    拋開各種人為因素,例如各種連接時間較長,其他組件啟動較慢導致等待…

    原因一

    項目中使用的無用配置太多。例如在一個最簡單的web中,你還加入了其他各種maven配置,并且將他們配置到項目中(只是比較夸張的例子,這些配置加入都不用),然后項目本身也不懂,既然你配置了,那就加載唄。

    一個花0.1秒,10個就1秒,100個就10秒了…以此類推,這一點就是最容易想明白的地方了。

    原因二

    spring boot的自動配置。自動配置是spring boot的一個特色,但是也是它啟動慢的一個弊病。

    沒辦法,通常好用功能全的東西,總會在一些地方上有缺陷。

    上面說到無用的配置多,這里要說的就是spring boot它自己裝配的東西太多。

    你可以看到在spring boot的相關jar包里,都存放著spring.factories的文件,進去一看,大部分都是寫了很多的類,它是實現spring boot自動裝配的核心之一。

    但是你仔細觀察會發現,其實有很多類,你可能完全不用。

    但有什么辦法呢,不管你用不用,至少它都會給你檢查一遍,這不也是花時間的地方嗎?

    原因三

    項目精簡程度不夠。現在比較流行微服務的概念,我認為它的概念核心含義即為精簡,單一,并且多數需要強調啟動速度的地方也多是出自微服務的項目中。

    一個微服務項目中,最好是在10秒以內能夠啟動完畢。但是多數是做不到的,原因在于項目拆分的還不夠細。

    你說一個接口啟動快,還是10個快,或是更多,答案很明顯。很多項目做到了大而全,所謂大而全就是功能很多,配置很齊全,各種可以擴展配置等,全面的不行不行的,但這意味著什么,你的配置多,有用沒用先不管,至少需要編譯和加載的類文件都會多出很多來,你說要這樣的項目能啟動快,怎么能啟動快呢?

    解決方法

    • 檢查maven中是否無用的依賴太多

    • 比較復雜,使用spring-boot-maven插件debug啟動,查看該項目中,使用了哪些配置,哪些配置沒用,然后在啟動類中直接注明只啟動使用了的類,并且刪掉@SpringBootApplication注解,手動填上@Configuration和@Import注解,并在@Import注解中加上那些配置的類。

    • 更換一些配置更快的依賴。例如,你使用A數據庫連接池,功能全,配置多,但速度較慢,但是其實B連接池也能滿足項目需求,但是功能相對較少,所以配置也少,啟動更快,你是不是需要考A和B應該選一個。

    • 拆分出更精簡的項目來獨自運行,大而全意味著多而不精,精而簡意味著少但是精通,它們速度,不言而喻。

    如何提高SpringBoot應用的啟動速度

    1、減少@ComponentScan @SpringBootApplication 掃描類時候的范圍

    2、關閉 Spring Boot 的 JMX 監控,設置 spring.jmx.enabled=false

    3、設置 JVM 參數 -noverify ,不對類進行驗證

    4、對非必要啟動時加載的 Bean ,延遲加載

    5、使用 Spring Boot 的全局懶加載

    6、AOP 切面盡量不使用注解方式,這會導致啟動時掃描全部方法

    7、關閉 endpoint 的一些監控功能

    8、排除項目多余的依賴 jar

    9、swagger 掃描接口時,指定只掃描某個路徑下的類

    10、Feign 客戶端接口的掃描縮小包掃描范圍

    關于“SpringBoot啟動速度慢的原因是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    鄂伦春自治旗| 富源县| 屏东市| 商都县| 安吉县| 柏乡县| 金门县| 兴安县| 芮城县| 彭泽县| 紫阳县| 湖州市| 五台县| 玉山县| 泸州市| 晴隆县| 沧州市| 慈溪市| 诏安县| 公安县| 孟州市| 峨眉山市| 莱西市| 雷山县| 北海市| 布拖县| 应城市| 南昌县| 崇义县| 满洲里市| 桦南县| 夏河县| 濮阳县| 洪洞县| 利辛县| 绍兴县| 西贡区| 栖霞市| 渭源县| 公主岭市| 舞钢市|