日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

優(yōu)化技巧:如何加快Spring項(xiàng)目啟動(dòng)速度

來源: 責(zé)編: 時(shí)間:2023-12-06 09:19:13 288觀看
導(dǎo)讀環(huán)境:Spring5.3.231. 介紹在大型的Spring項(xiàng)目中,由于有成百上千的Bean需要通過掃描注冊到Spring容器中,這會(huì)導(dǎo)致啟動(dòng)速度變慢。為了解決這個(gè)問題,我們可以使用spring-context-indexer來優(yōu)化啟動(dòng)速度。spring-context-inde

環(huán)境:Spring5.3.23LH828資訊網(wǎng)——每日最新資訊28at.com

1. 介紹

在大型的Spring項(xiàng)目中,由于有成百上千的Bean需要通過掃描注冊到Spring容器中,這會(huì)導(dǎo)致啟動(dòng)速度變慢。為了解決這個(gè)問題,我們可以使用spring-context-indexer來優(yōu)化啟動(dòng)速度。LH828資訊網(wǎng)——每日最新資訊28at.com

spring-context-indexer是一個(gè)工具,它可以在編譯時(shí)為類路徑下的組件創(chuàng)建索引,這樣在啟動(dòng)時(shí)就可以通過索引快速地加載和初始化組件。使用spring-context-indexer可以大大提升Spring應(yīng)用程序的啟動(dòng)速度,從而使得開發(fā)人員可以更快地開發(fā)和測試應(yīng)用程序,提高開發(fā)效率。LH828資訊網(wǎng)——每日最新資訊28at.com

在大型項(xiàng)目中,由于Bean數(shù)量眾多,Spring應(yīng)用程序的啟動(dòng)時(shí)間可能會(huì)變得非常長。通過使用spring-context-indexer,我們可以減少啟動(dòng)時(shí)間,從而減少對(duì)系統(tǒng)資源的占用,使得更多的資源可以被用來處理其他任務(wù)。此外,快速啟動(dòng)應(yīng)用程序還可以減少因?yàn)槌绦蜷L時(shí)間未響應(yīng)而導(dǎo)致的故障和錯(cuò)誤率。LH828資訊網(wǎng)——每日最新資訊28at.com

2. 配置使用

引入依賴包

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

如果使用的是gradleLH828資訊網(wǎng)——每日最新資訊28at.com

# gradle 4.5以下版本包括4.5dependencies {  compileOnly "org.springframework:spring-context-indexer:5.3.23"}# gradle 4.6以上版本dependencies {  annotationProcessor "org.springframework:spring-context-indexer:5.3.23"}

準(zhǔn)備Bean對(duì)象

@Componentpublic class Person {}@Componentpublic class Student {}@Componentpublic class User {}

測試上面的的類都能被容器掃描到

try (AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext("com.pack.context_indexed")) {    for (String name : context.getBeanDefinitionNames()) {      System.out.println(name) ;    }  }}

控制臺(tái)輸出LH828資訊網(wǎng)——每日最新資訊28at.com

org.springframework.context.annotation.internalConfigurationAnnotationProcessororg.springframework.context.annotation.internalAutowiredAnnotationProcessororg.springframework.context.annotation.internalCommonAnnotationProcessororg.springframework.context.annotation.internalPersistenceAnnotationProcessororg.springframework.context.event.internalEventListenerProcessororg.springframework.context.event.internalEventListenerFactorypersonstudentuser

所有的bean都能被容器掃描到LH828資訊網(wǎng)——每日最新資訊28at.com

手動(dòng)創(chuàng)建META-INF/spring.components 文件

內(nèi)容如下LH828資訊網(wǎng)——每日最新資訊28at.com

com.pack.context_indexed.Person=org.springframework.stereotype.Component

格式:完整的包名=完整注解名LH828資訊網(wǎng)——每日最新資訊28at.com

有了上面的索引文件后,再次運(yùn)行上面的測試文件LH828資訊網(wǎng)——每日最新資訊28at.com

# ...person

自定義的bean就只剩下person了,這就是因?yàn)樵谏厦娴乃饕募兄欢x了    person的原因,這樣就不會(huì)在掃描你當(dāng)前包下的所有class文件了,只會(huì)讀取索引文件中的內(nèi)容。LH828資訊網(wǎng)——每日最新資訊28at.com

此時(shí)如果你訪問不在此列表中的類,程序?qū)?bào)錯(cuò),找不到對(duì)應(yīng)的Bean對(duì)象。LH828資訊網(wǎng)——每日最新資訊28at.com

自定義注解支持

我們可以在索引文件中使用自己定義的注解,示例如下LH828資訊網(wǎng)——每日最新資訊28at.com

// 自定義注解@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)@Componentpublic @interface PackComponent {}// 修改User類注解@PackComponentpublic class User {}

在索引文件中添加配置

com.pack.context_indexed.Person=org.springframework.stereotype.Componentcom.pack.context_indexed.User=com.pack.context_indexed.PackComponent

控制臺(tái)輸出LH828資訊網(wǎng)——每日最新資訊28at.com

# ...personuser

以上都是通過手動(dòng)創(chuàng)建的方式,在實(shí)際大型項(xiàng)目中如果你手動(dòng)創(chuàng)建維護(hù)索引文件那還不如不使用索引,并且還及其容易出現(xiàn)錯(cuò)誤。我們可以借助IDE工具配置注解處理器來幫我們自動(dòng)的完成索引文件的創(chuàng)建。LH828資訊網(wǎng)——每日最新資訊28at.com

這里以Eclipse為例來配置LH828資訊網(wǎng)——每日最新資訊28at.com

首先,將spring-context-indexer添加eclipse注解處理中LH828資訊網(wǎng)——每日最新資訊28at.com

圖片圖片LH828資訊網(wǎng)——每日最新資訊28at.com

通過上面的1,2,3步后,索引文件將會(huì)被自動(dòng)的生成。LH828資訊網(wǎng)——每日最新資訊28at.com

自動(dòng)生成的spring.components文件,默認(rèn)將在target/classes/META-INF目錄下,部分內(nèi)容:LH828資訊網(wǎng)——每日最新資訊28at.com

com.pack.context_indexed.Persnotallow=org.springframework.stereotype.Componentcom.pack.context_indexed.Student=org.springframework.stereotype.Componentcom.pack.context_indexed.User=org.springframework.stereotype.Component

關(guān)閉索引功能LH828資訊網(wǎng)——每日最新資訊28at.com

我們可以通過設(shè)置JVM參數(shù)進(jìn)行關(guān)閉索引功能,在啟動(dòng)程序添加如下參數(shù)即可關(guān)閉LH828資訊網(wǎng)——每日最新資訊28at.com

-Dspring.index.ignore=true

在大型Spring項(xiàng)目中,由于Bean數(shù)量眾多,導(dǎo)致啟動(dòng)速度變慢。使用spring-context-indexer可以優(yōu)化啟動(dòng)速度,提高開發(fā)效率、減少資源占用和減少故障、錯(cuò)誤率。spring-context-indexer是一個(gè)工具,它可以在編譯時(shí)為類路徑下的組件創(chuàng)建索引,這樣在啟動(dòng)時(shí)就可以通過索引快速地加載和初始化組件。LH828資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-38514-0.html優(yōu)化技巧:如何加快Spring項(xiàng)目啟動(dòng)速度

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 理解 Wasm 基礎(chǔ)概念,了解 Wasm 是如何被加載運(yùn)行的?

下一篇: 手把手教你寫設(shè)計(jì)方案,你學(xué)明白了嗎?

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 帥氣純真少年!日本最帥初中生選美冠軍出爐

    日本第一帥哥初一生選美大賽冠軍現(xiàn)已正式出爐,冠軍是來自千葉縣的宗田悠良。日本一直熱衷于各種選美大賽,從&ldquo;最美JK&rdquo;起到&ldquo;最美女星&r
  • 轎車從天而降電動(dòng)車主被撞身亡 超速搶道所致:現(xiàn)場視頻讓網(wǎng)友吵翻

    近日,上海青浦區(qū)法院判決轎車從天而降電動(dòng)車主被撞身亡案,轎車車主被判有期徒刑一年。案件顯示當(dāng)時(shí)男子駕駛轎車在上海某路段行駛,前車忽然轉(zhuǎn)彎提速超車,
  • 從 Pulsar Client 的原理到它的監(jiān)控面板

    背景前段時(shí)間業(yè)務(wù)團(tuán)隊(duì)偶爾會(huì)碰到一些 Pulsar 使用的問題,比如消息阻塞不消費(fèi)了、生產(chǎn)者消息發(fā)送緩慢等各種問題。雖然我們有個(gè)監(jiān)控頁面可以根據(jù) topic 維度查看他的發(fā)送狀態(tài),
  • 讓我們一起聊聊文件的操作

    文件【1】文件是什么?文件是保存數(shù)據(jù)的地方,是數(shù)據(jù)源的一種,比如大家經(jīng)常使用的word文檔、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存數(shù)據(jù),它既可以保
  • 之家push系統(tǒng)迭代之路

    前言在這個(gè)信息爆炸的互聯(lián)網(wǎng)時(shí)代,能夠及時(shí)準(zhǔn)確獲取信息是當(dāng)今社會(huì)要解決的關(guān)鍵問題之一。隨著之家用戶體量和內(nèi)容規(guī)模的不斷增大,傳統(tǒng)的靠"主動(dòng)拉"獲取信息的方式已不能滿足用
  • 2天漲粉255萬,又一賽道在抖音爆火

    來源:運(yùn)營研究社作者 | 張知白編輯 | 楊佩汶設(shè)計(jì) | 晏談夢潔這個(gè)暑期,旅游賽道徹底火了:有的「地方」火了&mdash;&mdash;貴州村超旅游收入 1 個(gè)月超過 12 億;有的「博主」火了&m
  • 當(dāng)家的盒馬,加速謀生

    來源 | 價(jià)值星球Planet作者 | 歸去來自己&ldquo;當(dāng)家&rdquo;的盒馬,開始加速謀生了。據(jù)盒馬官微消息,盒馬計(jì)劃今年開放生鮮供應(yīng)鏈,將其生鮮商品送往食堂。目前,盒馬在上海已經(jīng)與
  • 四年持續(xù)更迭堅(jiān)持探索行業(yè)無人之境,HarmonyOS 4帶來五大升級(jí)多項(xiàng)創(chuàng)新

    除了華為每年新發(fā)布的旗艦手機(jī)系列,上億花粉更加期待鴻蒙系統(tǒng)每次的跨版本大更新。8月4日,HarmonyOS 4于HDC 2023正式發(fā)布,這也是該系統(tǒng)歷經(jīng)四年的再
  • AI芯片初創(chuàng)公司Tenstorrent獲三星和現(xiàn)代1億美元投資

    Tenstorrent是一家由芯片行業(yè)資深人士Jim Keller領(lǐng)導(dǎo)的加拿大初創(chuàng)公司,專注于開發(fā)人工智能芯片,該公司周三表示,已經(jīng)從現(xiàn)代汽車集團(tuán)和三星投資基金等
Top 主站蜘蛛池模板: 海伦市| 白朗县| 马尔康县| 云阳县| 恩平市| 大连市| 宁国市| 丰县| 和林格尔县| 长宁县| 金乡县| 安福县| 兴安盟| 卢龙县| 东乡县| 保山市| 南开区| 台山市| 华宁县| 镇沅| 铁岭县| 涟源市| 普安县| 西乌| 大城县| 河间市| 吉林市| 吉安县| 德兴市| 天长市| 沅江市| 麻城市| 曲阳县| 广汉市| 梓潼县| 高碑店市| 红安县| 西青区| 壤塘县| 定州市| 巧家县|