現在的開發都推崇使用註解來進行開發,這樣就可以免去XML配置了,學習註解之後就可以更好地理解註解是怎麼工作的了。
什麼是註解:
註解其實就是代碼中的特殊標記,這些標記可以在編譯、類加載、運行時被讀取,並執行相對應的處理。
註解其實就是兩個作用:
讓編譯器檢查代碼
將數據注入到方法、成員變量、類上
爲什麼要用註解:
傳統的方式,我們是通過配置文件(xml文件)來告訴類是如何運行的。但是有了註解技術之後,我們就可以通過註解來告訴類如何運行。
例如:
1、我們以前編寫Servlet的時候,需要在web.xml文件配置具體的信息
使用了註解之後,可以直接在Servlet源代碼上,增加註解,Servlet就被配置到Tomcat上了。也就是說註解可以給給、方法注入信息。
2、比如我們在編寫service層時,需要導入Dao層,還需要編寫setter、getter方法。
但是使用了註解之後,我們不需要再寫setter、getter方法了。spring可以自動幫你把bean裏面引用的對象的setter/getter方法省略,它會自動幫你set/get。
基本註解:
1、重寫註解:@Override
如果我們重寫父類的方法,就可以看見它了。
@Override是告訴編譯器要檢查該方法是實現父類的方法,可以幫我們避免一些錯誤。
比如,我們在實現父類的printWin方法時,把printWin()寫錯成pntWin()時,那麼編譯器就會發現該方法並不會實現父類的方法,與註解衝突,於是就會顯示錯誤提示我們。
2、抑制編譯器警告註解:@SuppressWarnings
我們可以用它來讓編譯器不給予我們警告。
比如當我們在使用集合時,如果沒有指定泛型,那麼會提示安全檢查警告
當我們在加上註解之後,那麼編譯器就不會給我們警告了。
自定義註解基礎:
1、標記註解:沒有任何成員變量的註解,@Overried就是一個標記註解
2、元數據註解:定義帶成員變量的註解。
使用註解:
1、下面有一個add的方法,需要username和age參數,我們通過註解來讓該方法擁有這兩個變量;
2、我們也可以在聲明屬性時,給出默認值。
在修飾的時候就不用給出具體值了
3、還有一種特殊的情況,如果註解上只有一個屬性,並且屬性的名稱爲value,那麼在使用的時候,我們可以不寫value,直接賦值給它就行
使用時:
爲什麼使用註解就可以把變量注入到方法上,是怎麼注入的:利用的是反射技術。
步驟:
反射出該類的方法
通過方法得到註解上具體的信息
將註解上的信息注入到方法上
這時要在自定義註解類中加@Retention(RetentionPolicy.RUNTIME),要不就會出現異常
注入對象到方法上:
Person類,定義username和age屬性,擁有uername和age的getter和setter方法
PersonDao類,PersonDao類定義了Person對象,擁有person的setter和getter方法
現在我要做的就是:使用註解將Person對象注入到setPerson()方法中,從而設置了PersonDao類的person屬性
步驟:
①: 自定義一個註解,屬性是和JavaBean類一致的
②:編寫注入工具
③:總結一下步驟
其實我們是這樣把對象注入到方法中的:
得到想要類中注入的屬性
得到該屬性的對象
得到屬性對應的寫方法
通過寫方法得到註解
獲取註解詳細的信息
將註解的信息注入到對象上
調用屬性寫方法,將已填充數據的對象注入到方法中
把對象注入到成員變量上:
步驟:
1、在成員變量上使用註解
2、編寫注入工具