Spring之spring-context-indexer依賴詳解
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)列表來提高大型應(yīng)用程序的啟動性能。
在此模式下,作為組件掃描目標(biāo)的所有模塊都必須使用此機(jī)制。
配置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)列表來提高大型應(yīng)用程序的啟動性能。
2.但是在此模式下,作為組件掃描目標(biāo)的所有模塊都必須使用此機(jī)制。才可以。
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文件。
當(dāng)Spring應(yīng)用上下文執(zhí)行ComponentScan掃描時,META-INT/spring.components將會被CandidateComponentsIndexLoader 讀取并加載,轉(zhuǎn)換為CandidateComponentsIndex對象,這樣的話@ComponentScan不在掃描指定的package,而是讀取CandidateComponentsIndex對象,從而達(dá)到提升性能的目的.
使用需注意點
雖然這個@Indexed注解能提升性能,但是在使用的時候也需要注意一一下。
假設(shè)Spring應(yīng)用中存在一個包含META-INT/spring.components資源的a.jar,b.jar僅存在模式注解,那么使用@ComponentScan掃描這兩個JAR中的package時,b.jar 中的模式注解不會被識別。
請務(wù)必注意這樣的問題。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
java 中InputStream,String,File之間的相互轉(zhuǎn)化對比
這篇文章主要介紹了java 中InputStream,String,File之間的相互轉(zhuǎn)化對比的相關(guān)資料,需要的朋友可以參考下2017-04-04
使用IDEA搭建一個簡單的SpringBoot項目超詳細(xì)過程
這篇文章主要介紹了使用IDEA搭建一個簡單的SpringBoot項目超詳細(xì)過程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-02-02
javascript與jsp發(fā)送請求到servlet的幾種方式實例
本文分別給出了javascript發(fā)送請求到servlet的5種方式實例與 jsp發(fā)送請求到servlet的6種方式實例2018-03-03
JUC系列學(xué)習(xí)工具類CountDownLatch詳解
這篇文章主要介紹了JUC系列學(xué)習(xí)工具類CountDownLatch詳解,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可任意參考一下2022-08-08

