当前位置: 首页 > news >正文

Mybatis反射工厂类DefaultReflectorFactory

DefaultReflectorFactory是反射工厂接口ReflectorFactory的默认实现,其主要是实现了对反射对象Reflector的创建和缓存。
有三个方法:

  // 判断是否开启缓存boolean isClassCacheEnabled();// 设置是否缓存void setClassCacheEnabled(boolean classCacheEnabled);// 生成反射对象ReflectorReflector findForClass(Class<?> type);

其缓存功能主要是通过ConcurrentMap实现的,ConcurrentHashMap是一个线程安全,并且是一个高效的HashMap。

DefaultReflectorFactory的源码如下:

package org.apache.ibatis.reflection;import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;public class DefaultReflectorFactory implements ReflectorFactory {private boolean classCacheEnabled = true;// 缓存反射对象Reflectorprivate final ConcurrentMap<Class<?>, Reflector> reflectorMap = new ConcurrentHashMap<Class<?>, Reflector>();public DefaultReflectorFactory() {}@Overridepublic boolean isClassCacheEnabled() {return classCacheEnabled;}@Overridepublic void setClassCacheEnabled(boolean classCacheEnabled) {this.classCacheEnabled = classCacheEnabled;}@Overridepublic Reflector findForClass(Class<?> type) {//判断是否开启缓存if (classCacheEnabled) {// 从缓存中获取反射对象Reflector Reflector cached = reflectorMap.get(type);//缓存中没有则新建反射对象并放入到缓存中if (cached == null) {cached = new Reflector(type);reflectorMap.put(type, cached);}return cached;} else {return new Reflector(type);}}
}
http://www.lryc.cn/news/246873.html

相关文章:

  • antDesignPro a-table样式二次封装
  • 找免费4K高清图片素材,就上这6个网站
  • 代码随想录算法训练营第35天| 860.柠檬水找零 406.根据身高重建队列 452. 用最少数量的箭引爆气球
  • 成为AI产品经理——TPR、FPR、ROC、AUC
  • java: Internal error in the mapping processor: java.lang.NullPointerException
  • TCP知识点
  • 大语言模型(LLMs)在 Amazon SageMaker 上的动手实践(一)
  • 顶级数据恢复工具—— 最全的15个数据恢复软件榜单
  • 【图像分类】【深度学习】【Pytorch版本】Inception-ResNet模型算法详解
  • Ubuntu 22.03 LTS 安装deepin-terminal 实现 终端 分屏
  • HTTP协议,Web框架回顾
  • el-checkbox 对勾颜色调整
  • 系统管理精要:深度探索 Linux 监控与管理利器
  • vue3之echarts渐变柱状图
  • 有一种浪漫,叫接触Linux
  • 构建 App 的方法
  • laravel实现发送邮件功能
  • 概要设计检查单、需求规格说明检查单
  • 达梦列式存储和clickhouse基准测试
  • 【Web】NewStarCtf Week2 个人复现
  • Python实现Windows服务自启动、禁用、启动、停止、删除
  • 【华为OD题库-043】二维伞的雨滴效应-java
  • 百度手机浏览器关键词排名优化——提升关键词排名 开源百度小程序源码系统 附带完整的搭建教程
  • Git 的基本概念和使用方式。
  • MarkDown学习
  • 案例:某电子产品电商平台借助监控易保障网络正常运行
  • IntelliJ IDEA 中有什么让你相见恨晚的技巧
  • 游戏被攻击了怎么办
  • MySQL 索引类型
  • 哈希表——闭散列表