最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot優(yōu)化啟動(dòng)速度實(shí)現(xiàn)過程

 更新時(shí)間:2026年05月05日 10:44:42   作者:tomorrow.hello  
本文主要介紹了SpringBoot啟動(dòng)慢的原因,并提供了多種針對(duì)性優(yōu)化方案,如延遲Bean初始化、關(guān)閉JMX、減少組件掃描、升級(jí)JDK及SpringBoot版本等,旨在提升應(yīng)用啟動(dòng)速度

1.優(yōu)化后優(yōu)勢

啟動(dòng)速度更快,提升水平擴(kuò)展的啟動(dòng)速度。占用資源更少,打包體積更小。

2. SpringBoot啟動(dòng)慢的原因

  • 過多的自動(dòng)配置:Spring Boot 的自動(dòng)配置功能雖然強(qiáng)大,但當(dāng)項(xiàng)目依賴增多,它會(huì)嘗試為各類依賴自動(dòng)配置,這無疑會(huì)延長啟動(dòng)時(shí)間。
  • 大量的 Bean 初始化:每個(gè) Spring Bean 的初始化都要耗費(fèi)一定時(shí)間,尤其是那些依賴眾多的復(fù)雜 Bean,比如某些 Service 或 Controller。項(xiàng)目中 Bean 數(shù)量越多,啟動(dòng)速度就越受影響。
  • 不必要的組件掃描:Spring Boot 依據(jù)配置文件或注解掃描指定包中的所有類。若包內(nèi)存在大量與應(yīng)用無關(guān)的類,啟動(dòng)速度必然大打折扣。
  • 數(shù)據(jù)源初始化緩慢:在大型項(xiàng)目里,數(shù)據(jù)庫連接池的初始化以及數(shù)據(jù)源配置可能耗時(shí)較長,特別是在數(shù)據(jù)庫連接速度欠佳,或者需要執(zhí)行大量初始化 SQL 腳本時(shí)。
  • 應(yīng)用依賴繁雜:引入過多依賴庫,會(huì)致使應(yīng)用啟動(dòng)時(shí)加載海量類和資源,進(jìn)而拖慢啟動(dòng)速度。

3. 延遲 Bean 初始化

Springboot中一般擁有了很多的耗時(shí)任務(wù),比如創(chuàng)建數(shù)據(jù)庫連接,初始化線程池等。我們可以通過延遲加載(懶加載),來優(yōu)化啟動(dòng)啟動(dòng)速度。

從 Spring Boot 2.2 版本起,可通過在application.properties中配置spring.main.lazy-initialization=true來開啟延遲初始化。

配置文件方式:

spring.main.lazy-initialization=true

代碼方式:

  public static void main(String[] args) {
        SpringApplication springApplication = new SpringApplication();
        // 開啟延遲初始化
        springApplication.setLazyInitialization(true);
        // 啟動(dòng)SpringApplication
        ConfigurableApplicationContext context = springApplication.run(LXbootWebProgram.class, args);
    }

3.1 創(chuàng)建掃描索引@Indexed

引入依賴,并在啟動(dòng)類上增加@Indexed

Spring5之后提供了spriing-context-indexer功能,可以通過在編譯時(shí)創(chuàng)建一個(gè)靜態(tài)候選列表來提高大型應(yīng)用程序的啟動(dòng)性能。

spring-context-indexer依賴,編譯時(shí),Spring 會(huì)在META-INF\spring.components中生成額外文件,啟動(dòng)時(shí)會(huì)自動(dòng)使用該文件,無需額外配置。

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-indexer</artifactId>
            <optional>true</optional>
        </dependency>

3.2 關(guān)閉JMX

JMX的全稱為Java Management Extensions. 顧名思義,是管理Java的一種擴(kuò)展。

這種機(jī)制可以方便的管理正在運(yùn)行中的Java程序。

常用于管理線程,內(nèi)存,日志Level,服務(wù)重啟,系統(tǒng)環(huán)境等。        

spring.jmx.enabled=true

3.3 其他方式

  • 減少@ComponentScan @SpringbootApplication掃描
  • 設(shè)置JVM參數(shù) -noverify,不對(duì)類進(jìn)行驗(yàn)證
  • AOPO面向切面盡量不使用注解方式,這樣能減少啟動(dòng)掃描的耗時(shí)
  • 關(guān)閉一些不需要的endpoint監(jiān)控接口
  • 排除多余jar
  • swagger掃描接口時(shí),指定掃描路徑到類下
  • Fegin客戶端接口掃描范圍縮小

3.4 升級(jí)jdk17

JDK升級(jí)后GC垃圾回收器也進(jìn)行了一定的優(yōu)化。

  • JDK12之后使用G1
  • JDK13之后使用ZGC

3.5 升級(jí)Springboot3

springboot3使用GraalVM將springboot的應(yīng)用程序編譯成本地可執(zhí)行的鏡像文件,可以很多的提前啟動(dòng)速度和內(nèi)存優(yōu)化。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java結(jié)合JS實(shí)現(xiàn)URL編碼與解碼

    Java結(jié)合JS實(shí)現(xiàn)URL編碼與解碼

    這篇文章介紹了Java結(jié)合JS實(shí)現(xiàn)URL編碼與解碼的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • Java字符串常量池和intern方法解析

    Java字符串常量池和intern方法解析

    本文主要介紹了Java字符串常量池和intern方法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Java實(shí)現(xiàn)JDBC批量插入原理詳解

    Java實(shí)現(xiàn)JDBC批量插入原理詳解

    在JDBC中,executeBatch這個(gè)方法可以將多條dml語句批量執(zhí)行,效率比單條執(zhí)行executeUpdate高很多,這是什么原理呢?在mysql和oracle中又是如何實(shí)現(xiàn)批量執(zhí)行的呢?本文將給大家介紹這背后的原理
    2023-03-03
  • Intellij IDEA配置Jetty的方法示例

    Intellij IDEA配置Jetty的方法示例

    這篇文章主要介紹了Intellij IDEA配置Jetty的方法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-10-10
  • SpringBoot整合mysql、postgres及sqlserver實(shí)現(xiàn)多數(shù)據(jù)源配置實(shí)戰(zhàn)案例

    SpringBoot整合mysql、postgres及sqlserver實(shí)現(xiàn)多數(shù)據(jù)源配置實(shí)戰(zhàn)案例

    在工作中業(yè)務(wù)的發(fā)展或業(yè)務(wù)數(shù)據(jù)隔離的場景下,通常需要一個(gè)項(xiàng)目中引入多個(gè)數(shù)據(jù)源,但SpringBoot默認(rèn)的自動(dòng)化配置是單數(shù)據(jù)源的,這篇文章主要給大家介紹了關(guān)于SpringBoot整合mysql、postgres及sqlserver實(shí)現(xiàn)多數(shù)據(jù)源配置的相關(guān)資料,需要的朋友可以參考下
    2023-12-12
  • Java繪制迷宮動(dòng)畫并顯示的示例代碼

    Java繪制迷宮動(dòng)畫并顯示的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用Java語言實(shí)現(xiàn)繪制迷宮動(dòng)畫并顯示,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Java有一定幫助,需要的可以參考一下
    2022-08-08
  • java實(shí)現(xiàn)文件加密解密多種方法

    java實(shí)現(xiàn)文件加密解密多種方法

    這篇文章主要給大家介紹了關(guān)于java實(shí)現(xiàn)文件加密解密多種方法的相關(guān)資料,?Java支持多種加密解密算法,常用的有DES、AES、RSA等,需要的朋友可以參考下
    2023-07-07
  • springboot用thymeleaf模板的paginate分頁完整代碼

    springboot用thymeleaf模板的paginate分頁完整代碼

    本文根據(jù)一個(gè)簡單的user表為例,展示 springboot集成mybatis,再到前端分頁完整代碼,需要的朋友可以參考下
    2017-07-07
  • Java死鎖問題詳解及示例

    Java死鎖問題詳解及示例

    本文將討論Java程序中死鎖問題的概念、產(chǎn)生原因以及避免策略。同時(shí),我們還將通過代碼示例來進(jìn)一步闡述這個(gè)問題,感興趣的小伙伴可以跟著小編一起來學(xué)習(xí)
    2023-04-04
  • MyBatis-Plus常見面試題和答案大全

    MyBatis-Plus常見面試題和答案大全

    Mybatis-Plus是一個(gè)基于Mybatis的增強(qiáng)工具,它簡化了Mybatis的開發(fā)流程,提供了許多實(shí)用的功能,如自動(dòng)生成代碼、分頁查詢、條件構(gòu)造器、性能分析等,這篇文章主要給大家介紹了關(guān)于MyBatis-Plus常見面試題和答案的相關(guān)資料,需要的朋友可以參考下
    2023-06-06

最新評(píng)論

三门县| 天祝| 稷山县| 台北县| 新民市| 扎鲁特旗| 内乡县| 泰宁县| 利辛县| 上高县| 肥城市| 南阳市| 多伦县| 谢通门县| 大化| 贵州省| 建宁县| 阿合奇县| 大渡口区| 广州市| 嘉荫县| 广汉市| 赣榆县| 博乐市| 修武县| 阜康市| 中牟县| 秦安县| 江陵县| 玉田县| 内江市| 库车县| 霞浦县| 探索| 蓬莱市| 罗平县| 阜宁县| 邵阳县| 曲水县| 威宁| 常州市|