@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 配置类模式注解
目录
相关文章
|
2月前
|
Java 数据库连接 Spring
Validated 和 @Valid 的真正区别!
Validated 和 @Valid 的真正区别!
|
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 注入
173 0
|
设计模式 Java 测试技术
【注解使用】使用@Autowired注解警告Field injection is not recommended
【注解使用】使用@Autowired注解警告Field injection is not recommended
345 0
|
Java Spring
Spring笔记-@Order注解和Ordered接口
Spring笔记-@Order注解和Ordered接口
|
数据库 索引
@Table注解
@Table注解
|
数据库
Mybatis-plus 注解 @TableField(exist = false)
@TableField(exist=false)注解加在bean属性上,表示当前属性不是数据库的字段,但在项目中必须使用,这样在新增等使用bean的时候,mybatis-plus就会忽略这个,不会报错,返回数据库数据时候字段会被映射
Mybatis-plus 注解 @TableField(exist = false)
|
Java Spring
Spring源码(二-2)-lookup-method、replaced-method标签
lookup-method 通常称为获取器注入,spring in action 中对它的描述是,一种特殊的方法注入,它是把一个方法声明为返回某种类型的 bean,而实际要返回的 bean 是在配置文件里面配置的。
579 1
|
Java Spring
自定义@Validated参数注解
Spring Validated参数校验
405 0
|
JSON 前端开发 Java
Validated、Valid 、Validator,他们的区别你知道几个
Validated、Valid 、Validator,他们的区别你知道几个
619 0
Validated、Valid 、Validator,他们的区别你知道几个