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