Mybatis源码之美:2.10.解析reflectorFactory元素,解析并配置Reflector对象的创建工厂

原创
2020/06/27 10:26
阅读数 280

解析reflectorFactory元素,解析并配置Reflector对象的创建工厂

我们在上前文提到过ReflectorFactory,他是一个用于根据class生成对应的Reflector对象的辅助性工厂类,

他创建的Reflector对象用来缓存一个类定义的基本信息,包括类的类型,可读可写属性名称,以及对应的·getter/setter·方法,构造函数等。

对于ReflectorFactory的DTO定义和objectWrapperFactory相似:

<!--ELEMENT reflectorFactory EMPTY-->
<!--ATTLIST reflectorFactory
type CDATA #REQUIRED
-->

reflectorFactory 必须有一个type属性,该属性指向一个ReflectorFactory的实例,可以使用别名。

其解析方法也和objectWrapperFactory相似,借由ConfigurationparseConfiguration方法来对其进行解析和注册使用。

private void parseConfiguration(XNode root) {
    // ...
   // 配置反射工厂
   reflectorFactoryElement(root.evalNode("reflectorFactory"));
   // ...
}

/**
 * 解析reflectorFactory节点
 *
 * @param context reflectorFactory节点
 */
private void reflectorFactoryElement(XNode context) throws Exception {
    if (context != null) {
        String type = context.getStringAttribute("type");
        ReflectorFactory factory = (ReflectorFactory) resolveClass(type).newInstance();
        configuration.setReflectorFactory(factory);
    }
}

整个过程比较简单,在通过反射获取到ReflectoryFactory的实现类之后,mybatis会用其取代默认的DefaultReflectorFactory实现类。

关注我,一起学习更多知识

关注我

展开阅读全文
打赏
0
0 收藏
分享
加载中
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部