美文网首页深入剖析Mybatis实现的细节
第二章 反射模块 Reflector&Reflector

第二章 反射模块 Reflector&Reflector

作者: Xcdf | 来源:发表于2019-01-22 20:59 被阅读0次

反射包org.apache.ibatis.reflection的结构如下:

image.png

  Reflector是mybatis反射模块的基础,每一个Reflector对象对应一个类,在Reflector中缓存了反射操作需要使用的类的元信息。


Reflector类的属性和构造器

1.查找Clazz的默认构造方法(无参数构造方法),具体实现是通过反射遍历所有构造方法

  private void addDefaultConstructor(Class<?> clazz) {
    Constructor<?>[] consts = clazz.getDeclaredConstructors();
    for (Constructor<?> constructor : consts) {
      if (constructor.getParameterTypes().length == 0) {//构造方法的参数列表长度为0
        if (canControlMemberAccessible()) {
          try {
            constructor.setAccessible(true);
          }catch (Exception e) {
            //ignore
          }
        }
        if (constructor.isAccessible()) {
          this.defaultConstructor = constructor;
        }
      }
    }
  }

相关文章

网友评论

    本文标题:第二章 反射模块 Reflector&Reflector

    本文链接:https://www.haomeiwen.com/subject/engrjqtx.html