使用场景

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

使用方法

在项目中使用的时候需要导入一个spring-context-indexer jar

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

然后在代码中,对于使用了模式注解的类上加上@Indexed注解即可。如下:

使用maven打包后

原理

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

SpringFramework5.0 @Indexed注解 简单解析相关推荐

  1. 《Spring 3.0就这么简单》——1.6 展现层

    本节书摘来自异步社区<Spring 3.0就这么简单>一书中的第1章,第1.6节,作者: 陈雄华 , 林开雄著,更多章节内容可以访问云栖社区"异步社区"公众号查看 1. ...

  2. Java注解原理解析 转载至:梅仁

    一.注解(Annotation)简介 用武之地: 我们不拿定义做解释,因为相信看定义是非常枯燥的.注解用在哪?简单一句话就是,注解几乎是作为简化配置使用的技术.注解是jdk1.5以后出现的,它被广泛的 ...

  3. Android6.0执行时权限解析,RxPermissions的使用,自己封装一套权限框架

    Android6.0执行时权限解析,RxPermissions的使用.自己封装一套权限框架 在Android6.0中,新添加了一个执行时的权限,我相信非常多人都已经知道了.预计也知道怎么用了,这篇博客 ...

  4. JavaWeb学习总结(四十八)——模拟Servlet3.0使用注解的方式配置Servlet

    一.Servlet的传统配置方式 在JavaWeb开发中, 每次编写一个Servlet都需要在web.xml文件中进行配置,如下所示: 1 <servlet> 2 <servlet- ...

  5. 插件化框架DL源码的简单解析

    目前行业内已经有较多的插件化实现方案.本文主要对DL(DynamicLoadApk)这一个开源的侵入式插件化方案进行简单分析.因为Service组件插件化的实现逻辑和Activity大体相似,所以在这 ...

  6. java 解析xls 文件_java简单解析xls文件的方法示例【读取和写入】

    本文实例讲述了java简单解析xls文件的方法.分享给大家供大家参考,具体如下: 读取: import java.io.*; import jxl.*; import jxl.write.*; imp ...

  7. [ 转载 ] Java基础10--关于Object类下所有方法的简单解析

    关于Object类下所有方法的简单解析 类Object是类层次结构的根类,是每一个类的父类,所有的对象包括数组,String,Integer等包装类,所以了解Object是很有必要的,话不多说,我们直 ...

  8. 《Spring 3.0就这么简单》——1.5 业务层

    本节书摘来自异步社区<Spring 3.0就这么简单>一书中的第1章,第1.5节,作者: 陈雄华 , 林开雄著,更多章节内容可以访问云栖社区"异步社区"公众号查看 1. ...

  9. java在线打开xml文件_java实现简单解析XML文件功能示例

    本文实例讲述了java实现简单解析XML文件功能.分享给大家供大家参考,具体如下: package demo; import java.io.File; import java.io.IOExcept ...

最新文章

  1. base(C# 参考)
  2. 通过BI专题场景,深度剖析制造行业如何提高设备利用率?
  3. php几大对象,PHP 内部6大对象及其功能
  4. Oracle:ORA-01789: 查询块具有不正确的结果列数 分析原因和解决办法
  5. python time 语句_python的time模块总结
  6. 单片机c语言位运算写法,单片机与嵌入式系统中C语言的位运算小记
  7. 如何在工作繁重、睡眠较少的情况下保持旺盛精力?
  8. JSON数据格式以及与后台交互数据转换实例
  9. 1、Android-活动(下)
  10. pyenv、ipython、jupyter的安装使用
  11. 安卓手机运行ios教程_英雄联盟手游公测,安卓/苹果iOS注册下载教程!
  12. 可立图证件照API实现智能证件照制作
  13. 两个质数互质是_科学网—理解黎曼猜想(二)两个自然数互质的概率是多少? - 袁岚峰的博文...
  14. 同事能力比你强怎么办
  15. FastDFS-6.06安装(Centos 7)
  16. mysql粗粒度_粗粒度(Coarse-grained)vs细粒度(fine-grained)
  17. 双非本科小渣渣的字节跳动Android岗面试题分享(已拿offer,分享攒人品~)
  18. 113Echarts - 盒须图(Boxplot Light Velocity)
  19. 3D开发-PhotoScan 模型生成
  20. 2020.7.18【算协集训】[第1次积分赛]

热门文章

  1. [HTML]去除li前面的小黑点,和ul、LI部分属性
  2. JOSSO在JBOSS中安装与配置
  3. 第三十三讲:tapestry表单组件详解之Label
  4. 机器学习(一) 基于sklearn库的数据集划分(交叉验证)
  5. MySQL支持的四种索引_Mysql常见四种索引的使用
  6. 4pam调制与解调(matlab实现)
  7. Scrapy-redis实现分布式爬取的过程与原理
  8. Java作业08 计科1501 闫国雨
  9. oracle数据库连接 ORA-12638:身份证明检索失败
  10. [iOS] photoKit获取所有照片