1、註解
概述
註解與註釋,
註解,告訴編譯器如何運行程序!
註釋, 給程序員閱讀,對編譯、運行沒有影響;
註解作用,
1. 告訴編譯器如何運行程序;
2. 簡化(取代)配置文件 【案例後再看】
常用的註解
// 重寫父類的方法 @Override public String toString() { return super.toString(); } // 抑制編譯器警告 @SuppressWarnings({"unused","unchecked"}) private void save() { List list = null; } // 標記方法以及過時 @Deprecated private void } |
自定義註解
通過自定義註解,可以給類、字段、方法上添加描述信息!
a. 註解基本寫法
/** * 自定義註解 (描述一個作者) * @author Jie.Yuan public @interface Author { * 註解屬性 * 1.修飾爲默認或public * 2. 不能有主體 String name(); int age(); } |
使用 |
@Author(name = "Jet", age = 30) public void save() { } |
b.帶默認值的註解
public @interface Author { * 註解屬性 * 1.修飾爲默認或public * 2. 不能有主體 */ String name(); int age() default 30; //帶默認值的註解; 使用的時候就可以不寫此屬性值 } |
b.默認名稱的註解
註解屬性名稱爲value,這就是默認名稱
public @interface Author { // 如果註解名稱爲value,使用時候可以省略名稱,直接給值 // (且註解只有一個屬性時候纔可以省略名稱) String value(); } |
使用 |
@Author("Jet") |
@Author(value ="Jet") |
註解屬性類型爲數組:
public @interface Author { String[] value() default {"test1","test2"}; } |
使用: |
@Author({“”,“”}) public void save() { } |
元註解
元註解,表示註解的註解!
指定註解的可用範圍:
@Target({
TYPE, 類
FIELD, 字段
METHOD, 方法
PARAMETER, 參數
CONSTRUCTOR, 構造器
LOCAL_VARIABLE 局部變量
})
// 元註解 - 2.指定註解的聲明週期
@Retention(RetentionPolicy.SOURCE) 註解只在源碼級別有效
@Retention(RetentionPolicy.CLASS) 註解在字節碼即別有效 默認值
@Retention(RetentionPolicy.RUNTIME) 註解在運行時期有效
註解反射
@Id @Author(remark ="保存信息!!!", age = 19) public void save()throws Exception { // 獲取註解信息: name/age/remark // 1. 先獲取代表方法的Method類型; Class clazz = App_2.class; Method m = clazz.getMethod("save"); // 2. 再獲取方法上的註解 Author author = m.getAnnotation(Author.class); // 獲取輸出註解信息 System.out.println(author.authorName()); System.out.println(author.age()); System.out.println(author.remark()); } |
2. 註解,優化BaseDao的代碼
當表名與數據庫名稱不一致、 字段與屬性不一樣、主鍵不叫id, 上面的BaseDao不能用!
這是,
可以通過配置文件(XML) 解決!
註解:
簡化XML配置, 程序處理非常方便!
(不便於維護: 例如修改字段名,要重新編譯!)
XML
便於維護! 需要些讀取代碼!
3. Log4J日誌組件
程序中爲什麼用日誌組件?
簡單來說,爲了項目後期部署上線後的維護、錯誤排查!
Log4j, log for java, 開源的日誌組件!
使用步驟:
1. 下載組件,引入jar文件;
log4j-1.2.11.jar
2. 配置 : src/log4j.properties
3. 使用
# 通過根元素指定日誌輸出的級別、目的地: # 日誌輸出優先級: debug < info < warn < error log4j.rootLogger=info,console,file ############# 日誌輸出到控制檯 ############# # 日誌輸出到控制檯使用的api類 log4j.appender.console=org.apache.log4j.ConsoleAppender # 指定日誌輸出的格式: 靈活的格式 log4j.appender.console.layout=org.apache.log4j.PatternLayout # 具體格式內容 log4j.appender.console.layout.ConversionPattern=%d %p %c.%M()-%m%n
############# 日誌輸出到文件 ############# log4j.appender.file=org.apache.log4j.RollingFileAppender # 文件參數: 指定日誌文件路徑 log4j.appender.file.File=../logs/MyLog.log # 文件參數: 指定日誌文件最大大小 log4j.appender.file.MaxFileSize=5kb # 文件參數: 指定產生日誌文件的最大數目 log4j.appender.file.MaxBackupIndex=100 # 日誌格式 log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d %c.%M()-%m%n
|