2.10.解析 reflectorFactory元素 解析并配置 Reflector 对象的创建工厂
优质
小牛编辑
134浏览
2023-12-01
我们在上前文提到过ReflectorFactory
,他是一个用于根据class
生成对应的Reflector
对象的辅助性工厂类,
他创建的Reflector
对象用来缓存一个类定义的基本信息,包括类的类型,可读可写属性名称,以及对应的·getter/setter·方法,构造函数等。
对于ReflectorFactory
的DTO定义和objectWrapperFactory
相似:
<!ELEMENT reflectorFactory EMPTY>
<!ATTLIST reflectorFactory
type CDATA #REQUIRED
>
reflectorFactory
必须有一个type属性,该属性指向一个ReflectorFactory
的实例,可以使用别名。
其解析方法也和objectWrapperFactory
相似,借由Configuration
的parseConfiguration
方法来对其进行解析和注册使用。
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
实现类。