iBATIS的Log机制浅谈

开发 后端
iBATIS的Log机制是什么?iBATIS的Log机制又有什么特点么?那么本文将会向你简单介绍这些内容。

iBATIS的Log机制的问题我们要首先从iBATIS的Log使用的两个类开始,他们是:
 
com.ibatis.common.logging.LogFactory

com.ibatis.common.logging.Log

查看这两个类的源代码,可以发现它不过是对org.apache.commons.logging、org.apache.log4j、java.util.logging,三种目前可用的Log框架的同时封装。

开始时很费解,不知iBATIS开发者为何要采用这种方式,直接使用某个确定的Log不就可以了吗?思考后发现原因如下:

“iBATIS宣称自己具有最少的第三方依赖性,其Log采用以上机制的原因也正在于此:如果iBATIS采用某个特定的Log框架,那么它就必须添加对该框架的依赖关系;而考虑到使用iBATIS的开发者肯定会使用以上三个Log框架中的某个,因此iBATIS决定与其使用者共用该框架;这样iBATIS就可以避免不必要的第三方依赖;另外,如果开发者的确没有使用某Log框架,查看iBATIS的Log代码可以发现它对此也有相应措施,即不log出任何东西。”

思考明白以上原因后,再查看com.ibatis.common.logging.LogFactory的代码,就不难理解了,但还是说明几个小点:

  1. private static void tryImplementation(String testClassName, String implClassName) ...{  
  2.  
  3.     if (logConstructor == null) ...{  
  4.  
  5.       try ...{  
  6.  
  7.         Resources.classForName(testClassName);  
  8.  
  9.         Class implClass = Resources.classForName(implClassName);  
  10.  
  11.         logConstructor = implClass.getConstructor(new Class[]...{Class.class});  
  12.  
  13.       } catch (Throwable t) ...{  
  14.  
  15.       }  
  16.  
  17.     }  
  18.  
  19.  } 

testClassName为某Log框架中的工厂类的类名,implClassName为该框架相应Log接口实现类的类名(该类属于iBATIS)。代码先加载工厂类,然后加载实现类,得到其class,并由class得到constructor,供getLog方法调用时使用。

iBATIS的Log机制就向你介绍到这里,希望对于你理解iBATIS的Log机制有所帮助。

【编辑推荐】

  1. iBATIS事务处理浅析
  2. iBatis和Hibernate的较量浅析
  3. iBATIS动态映射浅析
  4. iBATIS DAO框架浅析
  5. iBATIS的自动代码生成工具Abator在Eclipse的应用
责任编辑:仲衡 来源: CSDN博客
相关推荐

2009-07-22 09:25:36

iBATIS映射文件

2009-07-15 16:14:36

iBATIS优缺点

2020-09-30 06:47:22

Kotlin机制

2009-07-20 09:27:42

IBATIS.netDAO

2019-08-15 10:17:16

Webpack运行浏览器

2011-07-26 10:46:04

HTML 5

2011-03-10 15:22:08

访问控制机制Java

2023-12-11 07:21:12

SPI机制插件

2017-05-15 13:40:20

浏览器http缓存机制

2009-07-24 17:22:22

CLR 4.0安全模型

2009-06-30 09:55:24

Spring运作机制

2017-04-26 14:15:35

浏览器缓存机制

2013-09-29 15:11:46

Linux运维内存管理

2009-07-09 16:33:06

eclipse jvm

2010-04-16 11:17:33

hints调整

2019-05-10 14:00:21

小程序运行机制前端

2020-02-26 09:00:00

Chatbot架构模型聊天机器人

2010-01-06 09:30:51

Oracle Redo

2015-06-16 10:44:42

2018-12-06 14:47:34

点赞
收藏

51CTO技术栈公众号