溫馨提示×

溫馨提示×

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

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

Spring中spring-context-indexer依賴有什么用

發(fā)布時間:2021-11-09 11:16:19 來源:億速云 閱讀:484 作者:小新 欄目:開發(fā)技術

這篇文章給大家分享的是有關Spring中spring-context-indexer依賴有什么用的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

Spring spring-context-indexer依賴

<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)列表來提高大型應用程序的啟動性能。

在此模式下,作為組件掃描目標的所有模塊都必須使用此機制。

配置springboot啟動時自動打開瀏覽器 spring-context-indexer原理

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 項目大了, 每次啟動都非常的慢, 所有有了以下的依賴, 加速啟動:

spring-context-indexer

說明

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 ,用來表示, 你開啟了索引, 會加速項目的啟動速度.

原理說明:

先看官方的解釋:

Spring中spring-context-indexer依賴有什么用

在項目中使用了@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)容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節(jié)

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

AI