mybatis日志模块的需求分析
1.mybatis没有提供日志的实现类,需要使用第三方日志组件,需要接入不同的日志组件,但是各自的日志组件都有自己的log级别,各不相同。mybatis的日志级别分别为trace、warn、dubug、erro。
2.自动扫描日志实现,按照一定的顺序优先加载第三方日志,顺序分别为slf4j->commonsLoging->Log4j2->Log4j->JdkLog.
3.日志要优雅的嵌入到主体中。
适配器模式
适用场景,当调用双方都不太容易修改的时候,为了复用现有的组件,可以使用适配器模式,在系统中接入第三发组件的时候经常被使用到。
mybati日志模块是怎么使用适配器模块呢?
1.Target:根据目标角色期待得到的接口,org.apache.ibatis.logging.Log 接口,对内提供了统一的日志接口;
2.Adaptee:适配角色,被适配的接口。例如slf4J 、commonsLoging 、Log4J2等,它们被包含在适配角色中。
3.Adapter:适配器角色,将源接口转成目标接口。例如Slf4jLoggerImpl、Jdk14LoggingImpl、Log4jImpl。
总结
日志模块的实现采用适配器模式,日志的组件、适配器以及统一的Log接口,定义清晰明确,符合单一原则,同时客户端在调用日志的时候是面向Log接口编程,不需要关心底层的实现,符合依赖倒转原则。当有其他第三方组件的加入的时候,只需要新增模块满足需求,不需要修改原有的代码,符合开闭原则。