Spring的别名管理比较规范,有严格的接口规范,SimpleAliasRegistry实现 -> AliasRegistry接口,并且是线程安全的,Map也用的是ConcurrentHashMap,key是String,value是String,并且能够循环引用。安全
mybatis的别名管理器是TypeAliasRegistry类,我的感受有点不规范,多是看Spring源码看多了,线程不安全,Map用的是普通的HashMap,key是String,value是Class<?>,没有循环引用问题。mybatis
先从TypeAliasRegistry构造函数开始,先注册一些别名:框架
8大基本数据类型的添加,加了一个下划线"_"函数
8个基本数据类型的包装类型线程
和一些集合框架经常使用的类的别名。xml
再看Configuration的构造函数,注册了一些经常使用的别名。接口
还有一个途径就是,mybatis-config.xml文件中配置typeAlias标签,字符串
有两种方式,直接定义别名使用"alias"与"type",另外一种是扫描包方式使用"package",该包下使用@Alias注解,都会注册进管理器中。源码
从方法开始:Class<T> resolveAlias(String string) ;string
内部实现是先从Map中获取,获取到就返回,获取不到就把这个字符串当作类的全限定名,使用Class<?> c = Class.forName方法返回。