溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

spring boot中怎么優(yōu)化啟動(dòng)速度

發(fā)布時(shí)間:2021-08-05 16:17:23 來(lái)源:億速云 閱讀:1139 作者:Leah 欄目:編程語(yǔ)言

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)spring boot中怎么優(yōu)化啟動(dòng)速度,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

步驟如下:

將日志級(jí)別設(shè)置為debug,啟動(dòng)后重點(diǎn)關(guān)注以下輸出日志內(nèi)容

=========================
AUTO-CONFIGURATION REPORT
=========================

然后復(fù)制 Positive matches 里面所有出現(xiàn)的自動(dòng)配置對(duì)象,刪除啟動(dòng)類中的SpringBootApplication注解,改為手動(dòng)配置,如下:

@Configuration
@Import({
xxAutoConfiguration.class,
})
public class App {

以上步驟操作后,是不是覺(jué)得沒(méi)啥優(yōu)化空間了,那你就大錯(cuò)特錯(cuò)了,接下來(lái)我們可以分析下boot中有多少實(shí)現(xiàn)xxRunner接口的類,如果發(fā)現(xiàn)該類運(yùn)行比較耗時(shí),這時(shí)候我們就可以下手去優(yōu)化它,具體分析步驟如下:
  1. 通過(guò)ApplicationContext#getBean(XxRunner.class),就可以知道當(dāng)前項(xiàng)目中有多少Runner

  2. 然后監(jiān)聽(tīng)每個(gè)Runner運(yùn)行過(guò)程需要消耗的時(shí)長(zhǎng),當(dāng)然如果通過(guò)第一步獲取到的Runner很少可以忽略以下步驟

  3. 將所有的Runner子類的run方法由原來(lái)的同步改為異步,這對(duì)程序正常運(yùn)行基本上不會(huì)有影響,如果確實(shí)需要同步執(zhí)行的,可以忽略這些特需類

具體如何實(shí)現(xiàn),此處只提供思路,不提供代碼,哈哈,很簡(jiǎn)單利用aop去攔截XxRunner#run方法,然后使用線程池去執(zhí)行run方法即可

經(jīng)過(guò)以上操作基本上完成大部分優(yōu)化工作,接下還有沒(méi)有優(yōu)化空間,當(dāng)然有,具體如下:
  1. 排除項(xiàng)目用多余的依賴jar,具體如何排除可以通過(guò)idea中的maven-helper插件去分析jar依賴關(guān)系

  2. 如果項(xiàng)目用到swagger,在生產(chǎn)環(huán)境打包時(shí)去除swagger所有依賴,因?yàn)樯a(chǎn)環(huán)境根本用不上,swagger生成api接口時(shí)需要掃描所有的controller,這是很費(fèi)時(shí)的過(guò)程

  3. 接下來(lái)就是整個(gè)性能優(yōu)化,此處就不做說(shuō)明,如內(nèi)置tomcat調(diào)優(yōu)或者直接換成undertow,jvm調(diào)優(yōu)等自行百度

上述就是小編為大家分享的spring boot中怎么優(yōu)化啟動(dòng)速度了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI