MyBatis別名

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

相關文章
相關標籤/搜索