【原創(chuàng)文章,轉(zhuǎn)載請(qǐng)注明原文章地址,謝謝滔韵!】
org.mybatis.generator.internal.util.messages.Message類:####
用于獲得消息做國(guó)際化级及,使用的bundle是org.mybatis.generator.internal.util.messages.messages棚亩;
小技巧拼卵,在輸出大量信息的時(shí)候(比如help消息)
- 先創(chuàng)建一個(gè)key:Usage.Lines=27,得到一共多少行消息,
- 然后用for循環(huán)遍歷每一行消息輸出:Usage.0~Usage.27
org.mybatis.generator.logging:####
放的是MGB日志相關(guān)內(nèi)容蛮艰;在MBG中腋腮,日志支持兩種雀彼,一種是Log4J,一種是JDK的logging即寡,而這個(gè)包里面的類就是對(duì)日志的一個(gè)門(mén)面徊哑。我的理解,在MBG出來(lái)的時(shí)候聪富,還沒(méi)有slf4j莺丑,所以沒(méi)有用slf4j,感覺(jué)這個(gè)包其實(shí)比較沒(méi)太大意義墩蔓;
AbstractLogFactory:一個(gè)日志工廠的接口梢莽,提供了一個(gè)getLog(Class)方法對(duì)傳入的Class返回一個(gè)Log;
-
Log:對(duì)日志器的接口(具體Logger的門(mén)面)奸披;提供了通用的日志器方法:
- isDebugEnabled:是否debug級(jí)別昏名;
- error:記錄錯(cuò)誤
- debug:記錄debug信息;
- warn:記錄錯(cuò)誤信息阵面;
-
Log4jImpl:對(duì)Log4J的一個(gè)適配轻局;簡(jiǎn)單對(duì)比一個(gè)方法:
public JdkLoggingImpl(Class<?> clazz) {
log = Logger.getLogger(clazz.getName());
}public boolean isDebugEnabled() { return log.isLoggable(Level.FINE); } public void error(String s, Throwable e) { LogRecord lr = new LogRecord(Level.SEVERE, s); lr.setSourceClassName(log.getName()); lr.setThrown(e); log.log(lr); }
-
JdkLoggingImpl:對(duì)JDK的logging的適配;簡(jiǎn)單的看一個(gè)方法就明白:
public Log4jImpl(Class<?> clazz) { log = Logger.getLogger(clazz); } public boolean isDebugEnabled() { return log.isDebugEnabled(); } public void error(String s, Throwable e) { log.error(s, e); }
-
LogFactory:對(duì)Log工廠的一個(gè)包裝样刷;在LogFactory中持有一個(gè)AbstractLogFactory引用仑扑;
在LogFactory中持有兩個(gè)實(shí)現(xiàn)了AbstractLogFactory的靜態(tài)內(nèi)部類:- JdkLoggingLogFactory:對(duì)JDKlogging的包裝類,其創(chuàng)建的Logger其實(shí)就是JdkLoggingImpl置鼻;
- Log4jLoggingLogFactory:對(duì)Log4J的包裝類镇饮,其創(chuàng)建的Logger其實(shí)就是Log4jImpl;
在MBG中沃疮,都是使用LogFactory的LogFactory.getLog(Class targetLogClass)直接獲取對(duì)一個(gè)Class的日志對(duì)象盒让;
這個(gè)日志工廠在MBG中是固定的,不容易直接擴(kuò)展司蔬;