一厌殉、概述
? ? ? ? 本文,主要了解注解的作用侈咕。為后面Spring 注解方式實現(xiàn)IOC 公罕,DI 做鋪墊。
? ? ? ? 之前耀销,主要是通過xml配置來實現(xiàn) IOC和DI楼眷,后面的文章將介紹使用注解來完成。
二熊尉、注解概念
????注釋:
????????????給人看的提示信息罐柳,人看了提示信息了解程序的內(nèi)容
????????????java中注釋的格式://? /**/? /** */
? ? 注解:
? ? ????????sun在jdk5.0開始提供的新特性
????????????給程序看的提示信息,程序看后可以根據(jù)有無注解及注解上屬性的不同配置執(zhí)行不同的邏輯狰住。
三张吉、jdk常用內(nèi)置注解介紹
@Override
????????聲明重寫父類方法的注解,要求編譯器幫我們檢查是否成功的覆蓋催植,如果沒有成功覆蓋父類方法肮蛹,編譯器將會進(jìn)行報錯提示。
@Deprecated
????????聲明方法被過時创南,不再建議使用伦忠,要求編譯器在編譯的過程中對于這樣的方法的調(diào)用提出警告,提示方法過時扰藕。
@SuppressWarnings
????????壓制警告缓苛,提示編譯器,在編譯的過程中對指定類型的警告不再提示
四邓深、自定義注解開發(fā)
1 使用@interface關(guān)鍵字聲明一個注解
2 元注解:修飾注解的注解
? ? ? ? @Target??用來聲明被修飾的注解可以用在什么位置未桥。
????????@Retention?用來聲明被修飾的注解會被保留到什么階段
????????????????a) RetentionPolicy.SOURCE????????
????????????????此注解將會被保留到源碼階段,.java中芥备,在編譯過程中被刪除冬耿。這種類型的注解通常是給編譯器看的。
????????????????b) RetentionPolicy.CLASS
????????????????此注解將會被保留在源碼階段 和 編譯階段 ,.java和.class中,在類加載的過程中被刪除帜平。這種類型的注解通常是給類加載器看的灶似。
????????????????c) RetentionPolicy.RUNTIME
? ? ? ? ? ? ? ? 此注解將會被保留在源碼階段 、編譯階段 和 運行階段磁玉,.java .class和內(nèi)存中的字節(jié)碼中都會存在。
? ??????????????這種類型的注解通常用來在運行階段進(jìn)行反射,控制程序運行過程绊起。
? ??????@Documented 不常用
? ??????@Inherited?不常用
五、反射注解
常用方法
isAnnotationPresent(Class<? extends Annotation>?annotationClass)
如果指定類型的注釋存在于此元素上燎斩,則返回 true虱歪,否則返回 false。
getAnnotation(Class<A>?annotationClass)
如果存在該元素的指定類型的注釋栅表,則返回這些注釋笋鄙,否則返回 null。
getAnnotations()
返回此元素上存在的所有注釋怪瓶。
六萧落、反射注解案例
參考代碼
????????https://github.com/hailindai/SpringSample
七、小結(jié)
? ? ? ? 本文主要需要明白 :程序可以讀取注解內(nèi)容洗贰,就像程序讀取xml配置文件一樣找岖。Spring既然可以讀取xml幫我們實現(xiàn)IOC,DI哆姻,那么自然也可以讀取注解幫我們實現(xiàn)IOC,DI宣增。這樣就可以繼續(xù)學(xué)習(xí)后續(xù)內(nèi)容。