您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關Spring中spring-context-indexer依賴有什么用的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-indexer</artifactId> <version>5.2.0.RELEASE</version> <optional>true</optional> </dependency> </dependencies>
雖然類路徑掃描非常快,但是Spring內(nèi)部存在大量的類,添加此依賴,可以通過在編譯時創(chuàng)建候選對象的靜態(tài)列表來提高大型應用程序的啟動性能。
在此模式下,作為組件掃描目標的所有模塊都必須使用此機制。
int port = 8080; String portPrefix = "--server.port="; for (String arg : args) { if (arg.startsWith(portPrefix)) { port = Integer.parseInt(arg.substring(portPrefix.length())); } } SpringApplication.run(AppRegisterApplication.class, args); try { Runtime.getRuntime().exec("cmd /c start http://localhost:" + port); } catch (IOException e) { e.printStackTrace(); }
現(xiàn)在使用的springboot 項目大了, 每次啟動都非常的慢, 所有有了以下的依賴, 加速啟動:
說明
1.雖然類路徑掃描非???,但是Spring內(nèi)部存在大量的類,添加此依賴,可以通過在編譯時創(chuàng)建候選對象的靜態(tài)列表來提高大型應用程序的啟動性能。
2.但是在此模式下,作為組件掃描目標的所有模塊都必須使用此機制。才可以。
3.需要spring5以上才能使用,親測有效, 依賴如下:
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-indexer</artifactId> <version>5.2.0.RELEASE</version> <optional>true</optional> </dependency>
然后再你的啟動類上加上一個注解: @Indexed ,用來表示, 你開啟了索引, 會加速項目的啟動速度.
原理說明:
先看官方的解釋:
在項目中使用了@Indexed之后,編譯打包的時候會在項目中自動生成META-INT/spring.components文件。
當Spring應用上下文執(zhí)行ComponentScan掃描時,META-INT/spring.components將會被CandidateComponentsIndexLoader 讀取并加載,轉(zhuǎn)換為CandidateComponentsIndex對象,這樣的話@ComponentScan不在掃描指定的package,而是讀取CandidateComponentsIndex對象,從而達到提升性能的目的.
使用需注意點
雖然這個@Indexed注解能提升性能,但是在使用的時候也需要注意一一下。
假設Spring應用中存在一個包含META-INT/spring.components資源的a.jar,b.jar僅存在模式注解,那么使用@ComponentScan掃描這兩個JAR中的package時,b.jar 中的模式注解不會被識別。
請務必注意這樣的問題。
感謝各位的閱讀!關于“Spring中spring-context-indexer依賴有什么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。