@Indexed注解

简介: @Indexed注解

@Indexed注解

作用:

在SpringFramework5.0引入了一个注解@Indexed ,它可以为Spring的模式注解1添加索引,以提升应用启动性能。

使用场景:

在应用中有大量使用@ComponentScan扫描的package包含的类越多的时候,Spring模式注解解析耗时就越长。

原理说明:

在项目中使用了@Indexed之后,编译打包的时候会在项目中自动生成META-INT/spring.components文件。
当Spring应用上下文执行ComponentScan扫描时,META-INT/spring.components将会被CandidateComponentsIndexLoader 读取并加载,转换为CandidateComponentsIndex对象,这样的话@ComponentScan不在扫描指定的package,而是读取CandidateComponentsIndex对象,从而达到提升性能的目的。

使用需注意点:

虽然这个@Indexed注解能提升性能,但是在使用的时候也需要注意一一下。

假设Spring应用中存在一个包含META-INT/spring.components资源的a.jar,但b.jar仅存在模式注解,那么使用@ComponentScan扫描这两个JAR中的package时,b.jar 中的模式注解不会被识别。

补充:

META-INF文件夹的作用:

meta-inf文件夹相当于一个信息包,目录中的文件和目录获得Java 2平台的认可与解释,用来配置应用程序、扩展程序、类加载器和服务。其中的 MANIFEST.MF文件,在用jar打包时自动生成。上述的META-INT/spring.components就是它的作用的一个体现。

jar包:

JAR 文件就是 Java Archive File,顾名思意,它的应用是与 Java 息息相关的,是 Java 的一种文档格式。JAR 文件非常类似 ZIP 文件——准确的说,它就是 ZIP 文件,所以叫它文件包。JAR 文件与 ZIP 文件唯一的区别就是在 JAR 文件的内容中,包含了一个 META-INF/MANIFEST.MF 文件,这个文件是在生成 JAR 文件的时候自动创建的。


  1. @Repository 数据仓库模式注解,@Component 通用组件模式注解,@Service 服务模式注解,@ControllerWeb 控制器模式注解,@Configuration 配置类模式注解
目录
相关文章
|
10月前
|
Java 容器 Spring
No qualifying bean of type或Unsatisfied dependency expressed through field ‘XXXService‘或@Autowired 注入
No qualifying bean of type或Unsatisfied dependency expressed through field ‘XXXService‘或@Autowired 注入
85 0
|
11月前
|
设计模式 Java 测试技术
【注解使用】使用@Autowired注解警告Field injection is not recommended
【注解使用】使用@Autowired注解警告Field injection is not recommended
98 0
|
Java Spring
Spring笔记-@Order注解和Ordered接口
Spring笔记-@Order注解和Ordered接口
|
Java Spring
@Lazy注解简单理解
@Lazy注解简单理解
331 0
|
设计模式 XML Java
SPRING02_核心注解、Bean、primary、DependsOn、Lazy、Scope、ComponentScan、详解Import、Lookup注解(一)
SPRING02_核心注解、Bean、primary、DependsOn、Lazy、Scope、ComponentScan、详解Import、Lookup注解(一)
171 0
SPRING02_核心注解、Bean、primary、DependsOn、Lazy、Scope、ComponentScan、详解Import、Lookup注解(一)
|
容器
SPRING02_核心注解、Bean、primary、DependsOn、Lazy、Scope、ComponentScan、详解Import、Lookup注解(三)
SPRING02_核心注解、Bean、primary、DependsOn、Lazy、Scope、ComponentScan、详解Import、Lookup注解(三)
123 0
SPRING02_核心注解、Bean、primary、DependsOn、Lazy、Scope、ComponentScan、详解Import、Lookup注解(三)
|
Java Spring
Spring 基于注解(annotation)的配置之@Required注解
Spring 基于注解(annotation)的配置之@Required注解
120 0
Spring 基于注解(annotation)的配置之@Required注解
SPRING02_核心注解、Bean、primary、DependsOn、Lazy、Scope、ComponentScan、详解Import、Lookup注解(五)
SPRING02_核心注解、Bean、primary、DependsOn、Lazy、Scope、ComponentScan、详解Import、Lookup注解(五)
131 0
|
XML 缓存 Java
SPRING02_核心注解、Bean、primary、DependsOn、Lazy、Scope、ComponentScan、详解Import、Lookup注解(二)
SPRING02_核心注解、Bean、primary、DependsOn、Lazy、Scope、ComponentScan、详解Import、Lookup注解(二)
146 0