Annotation

大家好止状,我是IT修真院上海分院第02期學(xué)員怎顾,一枚正直善良的Java程序員捉撮。

今天給大家分享一下彤断,修真院官網(wǎng)task2任務(wù)中可能會使用到的知識點:

使用Annotation時需要有哪些配置野舶?它的加載過程是怎樣實現(xiàn)的?



undefined_騰訊視頻

1.背景介紹

在編程中宰衙,一直強調(diào)的一點就是注釋的編寫平道,注釋的規(guī)范等等。尤其是越是核心供炼,程序越復(fù)雜一屋,邏輯越多的情況下,注釋的編寫對我們以后的閱讀代碼袋哼,維護(hù)軟件起著至關(guān)重要的作用冀墨。一款軟件有著好的注釋,相當(dāng)于一個中國人閱讀一篇帶著漢語翻譯的英文文章涛贯,其閱讀速度是事半功倍的效果诽嘉。但是今天想要總結(jié)的卻不是代碼中的注釋需要注意的問題,而是JDK5.0以后提供的一種新特性。


2.知識剖析

(一)注解開發(fā)介紹

Annotation(注解)虫腋,其實就是對類骄酗,方法,屬性進(jìn)行的一種標(biāo)示悦冀,一種注釋(注意趋翻,這個里注釋不是為了讓我們開發(fā)或維護(hù)人員閱讀更方便,而是為JVM看呢)盒蟆,通過這些標(biāo)示踏烙,Java虛擬機可以完成這些標(biāo)示對應(yīng)的功能。例如使用框架開發(fā)時历等,我們都是通過配置文件進(jìn)行對象關(guān)系組合映射等功能讨惩,而通過注解我們可以完全代替配置文件的編寫。

Annotation的作用:

編寫文檔:通過代碼里標(biāo)識的元數(shù)據(jù)生成文檔募闲。

代碼分析:通過代碼里標(biāo)識的元數(shù)據(jù)對代碼進(jìn)行分析步脓。

編譯檢查:通過代碼里標(biāo)識的元數(shù)據(jù)讓編譯器能實現(xiàn)基本的編譯檢查。

JDK內(nèi)置的幾個常用注解:

(1)@Override:此注解能夠?qū)崿F(xiàn)編譯時檢查浩螺,當(dāng)某方法前邊添加此注解時靴患,表示此方法為重寫父類中的方法。如果此方法不是父類的方法要出,例如我們本來想重寫toString呢鸳君,卻寫成了tostring,則編譯無法通過患蹂,會提示錯誤或颊。

(2)@Deprecated:此注解是對不應(yīng)該,或者將要淘汰的方法進(jìn)行標(biāo)識传于,當(dāng)編程人員使用時就會給予提示囱挑。

(3)@SuppressWanings:此注解表示去除一些警告,但是里邊需要我們制定參數(shù)沼溜。

(4)@interface進(jìn)行自定義注解的定義平挑。我們可以像@SuppressWanings一樣向里邊添加參數(shù)。比如利用@Target注解來指定其使用范圍系草;@Documented表示此注解是否文檔化通熄,就是當(dāng)我們生成文檔時,是否生成進(jìn)去找都;@Inherited標(biāo)注繼承唇辨,控制此注釋是否會影響到子類等等。

(二)Spring注解開發(fā)

Spring框架的核心功能IoC(Inversion of Control)能耻,也就是通過Spring容器進(jìn)行對象的管理赏枚,以及對象之間組合關(guān)系的映射亡驰。通常情況下我們會在xml配置文件中進(jìn)行action,service,dao等層的聲明,然后并告知框架我們想要的注入方式嗡贺,然后在類中聲明要組合類的get隐解,set方法。而通過Spring框架中注解的運用也就主要是解決這類問題的诫睬。而框架中另一個核心知識AOP,一種面向橫切面的方法編程,在程序中一般都是進(jìn)行一次設(shè)置就可以的帕涌,所以都還放在配置文件中摄凡。例如聲明式事物的設(shè)置,一次設(shè)置蚓曼,后邊就不用管了亲澡,所以這個沒有必要使用注解進(jìn)行簡化。

1.首先需要在配置文件中增加命名空間的和約束文件

2.開啟Spring的注解功能纫版,這樣Spring環(huán)境才會進(jìn)行指定位置的掃描床绪,進(jìn)行類之間的關(guān)聯(lián)組合

3.聲明注解類,讓Spring框架可以識別

(1)類的分層注解其弊,由于我們后臺開發(fā)都是分為三層進(jìn)行開發(fā)的癞己,所以Spring框架提供了三種對于不同層的注解方式:

控制層:@Controller

服務(wù)層:@Service

持久層:@Repository

默認(rèn)情況下使用注解聲明的Bean對象id名稱為:類名稱的首字母小寫,一般不需要我們進(jìn)行設(shè)置梭伐,如果想要設(shè)置時痹雅,例如我們指定的是實現(xiàn)類,而名字指向了接口糊识,直接添加value屬性即可:@Service(value="name")绩社,當(dāng)然value是可以省略的。

Spring框架還為我們提供了代替上邊三個分層注解的通用注解:@Component.當(dāng)然提倡大家使用分層注解更好一些赂苗,區(qū)分層次比較明確愉耙。

(2)自動裝配功能的實現(xiàn)對象之間的組合關(guān)系,在屬性前邊指定下邊的注解:

@Autowired : 采用類型的方式完成自動裝配 : byType

@Resource : 采用名稱+類型的方式完成自動裝配 : byName +byType

另外Spring提供的兩種注解的自動裝配功能拌滋,屬性不需要聲明set,get方法也可以完成組合功能朴沿,這是非常方便的。


3.常見問題

在開發(fā)中我們應(yīng)該選擇使用配置文件開發(fā)鸠真,還是使用注解開發(fā)悯仙?


4.解決方案

(1)注解開發(fā)的優(yōu)缺點

優(yōu)點:1)開發(fā)速度快;2)編譯期間容易發(fā)現(xiàn)錯誤的出處 吠卷。

缺點:1)管理分散锡垄,基本每個類上都有;2)擴展功能時祭隔,沒有遵循OCP開發(fā)原則货岭。

(2)配置文件開發(fā)的優(yōu)缺點

優(yōu)點:1)遵循OCP開發(fā)原則路操,修改配置文件即可進(jìn)行功能擴展;2)集中管理對象和對象之間的組合關(guān)系千贯,易于閱讀屯仗。

缺點:1)開發(fā)速度相對較慢;2)編譯時很難檢查出錯誤搔谴,運行中的錯誤很難定位魁袜,調(diào)試難度較大。

如果客戶需求不會頻繁發(fā)生變化敦第。那么使用注解非常好峰弹,開發(fā)效率快。

如果客戶需求經(jīng)常發(fā)生變化芜果,那么采用配置文件的方式會好一些鞠呈。有利于擴展。


5.編碼實戰(zhàn)


6.擴展思考

在使用框架開發(fā)中右钾,如何利用注解幫助我們提高效率蚁吝?


7.參考文獻(xiàn)

文獻(xiàn)一:http://blog.csdn.net/liujiahan629629/article/details/22325155

文獻(xiàn)二:http://blog.csdn.net/liujiahan629629/article/details/22696031


8.更多討論

問:注解換一下有效嗎?

答:Spring框架提供的是三種對于不同層的注解方式,所以他知識一種注解方式舀射。另外還有同樣注解窘茁。所以換名稱是有效的,他知識一種標(biāo)示后控,主要是看注解存在與那個類上庙曙,他就會把那個類注入的容器中。

問:注解的使用場合是啥浩淘?還是所有情況都能用

答:并不是所有情況都能用捌朴。像AOP,數(shù)據(jù)源等是需要配置文件配置的张抄。

問:采用注解的話是否算是侵入式編程

答:如果說算砂蔽,是因為加注解,則需要依賴注解的類型署惯,并且注解也會編譯到class中左驾。

如果說不算,是因為注解可以和框架主體分離极谊,依賴注解不代表依賴框架诡右。而且從邏輯上講,注解屬于元數(shù)據(jù)轻猖,不影響執(zhí)行(如果不反射也不自行解析字節(jié)碼帆吻,jvm不會管注解)

問:約定大于配置,對于這句話你怎么理解

答:所謂的約定優(yōu)于配置就是指在程序開發(fā)過程中我們約定好一些規(guī)則可以使我們更少的進(jìn)行配置和代碼編寫。

問:解釋一下命名空間的作用

答:

命名空間及其作用

感謝大家觀看咙边!

PPT戳這

今天的分享就到這里啦猜煮,歡迎大家點贊次员、轉(zhuǎn)發(fā)、留言王带、拍磚~


技能樹.IT修真院

“我們相信人人都可以成為一個工程師淑蔚,現(xiàn)在開始,找個師兄愕撰,帶你入門刹衫,掌控自己學(xué)習(xí)的節(jié)奏,學(xué)習(xí)的路上不再迷妹讼罚”绪妹。

這里是技能樹.IT修真院,成千上萬的師兄在這里找到了自己的學(xué)習(xí)路線柿究,學(xué)習(xí)透明化,成長可見化黄选,師兄1對1免費指導(dǎo)蝇摸。快來與我一起學(xué)習(xí)吧~

我的邀請碼:12190840办陷,或者你可以直接點擊此鏈接:http://www.jnshu.com/login/1/12190840

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末貌夕,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子民镜,更是在濱河造成了極大的恐慌啡专,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件制圈,死亡現(xiàn)場離奇詭異们童,居然都是意外死亡,警方通過查閱死者的電腦和手機鲸鹦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進(jìn)店門慧库,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人馋嗜,你說我怎么就攤上這事齐板。” “怎么了葛菇?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵甘磨,是天一觀的道長。 經(jīng)常有香客問我眯停,道長济舆,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任庵朝,我火速辦了婚禮吗冤,結(jié)果婚禮上又厉,老公的妹妹穿的比我還像新娘。我一直安慰自己椎瘟,他們只是感情好覆致,可當(dāng)我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著肺蔚,像睡著了一般煌妈。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上宣羊,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天璧诵,我揣著相機與錄音,去河邊找鬼仇冯。 笑死之宿,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的苛坚。 我是一名探鬼主播比被,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼泼舱!你這毒婦竟也來了等缀?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤娇昙,失蹤者是張志新(化名)和其女友劉穎尺迂,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體冒掌,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡噪裕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了宋渔。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片州疾。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖皇拣,靈堂內(nèi)的尸體忽然破棺而出严蓖,到底是詐尸還是另有隱情,我是刑警寧澤氧急,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布颗胡,位于F島的核電站,受9級特大地震影響吩坝,放射性物質(zhì)發(fā)生泄漏毒姨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一钉寝、第九天 我趴在偏房一處隱蔽的房頂上張望弧呐。 院中可真熱鬧闸迷,春花似錦、人聲如沸俘枫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鸠蚪。三九已至今阳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間茅信,已是汗流浹背盾舌。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蘸鲸,地道東北人妖谴。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像酌摇,于是被迫代替她去往敵國和親窖维。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,619評論 2 354