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方法返回。