Spring5--@Indexed注解 Spring使用@Indexed加快啟動速度


 

Spring5--@Indexed注解

Spring5--@Indexed注解
原創 Crazypokerk_ 最后發布於2019-08-02 17:05:01 閱讀數 639 收藏
展開

Spring Framework 5.0作為 Spring Boot 2.0 的底層核心框架,就目前已經發布的版本來看,相對於 Spring Framework 4.x 而言,注解驅動的性能提升不是那么明顯。然而隨着 Spring Framework 注解驅動能能力逐漸受到開發人員的關注,尤其在 Spring Boot 應用場景中,大量使用注解 @CompoentScan 掃描指定的 package,當掃描的 package 所包含的類越多時,Spring 模式注解解析的耗時就越長。對於這個問題,Spring Framework 5.0 版本引入的注解 @Indexed,為 Spring 模式注解添加索引,以提升應用啟動性能。
舉個栗子:

@Indexed
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {}

但是,注解 @Indexed 不能孤立地存在,需要在工程 pom.xml 中增加 org.springframework:spring-context-indexer 依賴:

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

當工程打包為 JAR 或在 IDE 工具中重新構建后,METE-INF/spring.components 文件將自動生成。換言之,該文件在編譯時生成。當 Spring 應用上下文執行 @CompoentScan 掃描時,METE-INF/spring.components 將被 CandidateComponentsIndexLoader 讀取並加載,轉化為 CandidateComponentsIndex 對象,進而 @CompoentScan 不再掃描指定的 package,而是讀取 CandidateComponentsIndex 對象,從而達到提升性能的目的。
————————————————
版權聲明:本文為CSDN博主「Crazypokerk_」的原創文章,遵循 CC 4.0 BY 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/Crazypokerk_/article/details/98211897

 

Spring使用@Indexed加快啟動速度

Spring使用@Indexed加快啟動速度
原創 Dongguabai 最后發布於2018-11-11 19:46:21 閱讀數 3063 收藏
展開

Spring讀取@Component組件(派生性),有兩種實現方式,一種是反射,一種是ASM。反射性能低主要是要loadClass,畢竟Class,需要Load,比如掃描”com.dongguabai”需要把所有的類load,效率太慢。

ASM相當於直接加載類的資源信息,ReadResource。

Spring5.0 后面又有了@Indexed,可以預編譯。

 

 

會生成spring.compoments文件:

跟lombok一樣在編譯期處理。
————————————————
版權聲明:本文為CSDN博主「Dongguabai」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/Dongguabai/article/details/83961406


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM