JavaWEB開發18——基礎增強

1、類加載器
1.什麼是類加載器,做用是什麼?
類加載器就加載字節碼文件(.class)java

2.類加載器的種類
類加載器有三種,不一樣類加載器加載不一樣的程序員

1)BootStrap:引導類加載器:加載都是最基礎的文件
2)ExtClassLoader:擴展類加載器:加載都是基礎的文件
3)AppClassLoader:應用類加載器:三方jar包和本身編寫java文件數組

怎麼得到類加載器?(重點)
ClassLoader 字節碼對象.getClassLoader();jvm

2、註解 @xxx
1.什麼是註解,註解做用
註解就是符合必定格式的語法 @xxxx
註解做用:
註釋:在閱讀程序時清楚----給程序員看的
註解:給jvm看的,給機器看的ide

註解在目前而言最主流的應用:代替配置文件
關於配置文件與註解開發的優缺點:
註解優勢:開發效率高 成本低
註解缺點:耦合性大 而且不利於後期維護代理

2.jdk5提供的註解
@Override:告知編譯器此方法是覆蓋父類的
@Deprecated:標註過期
@SuppressWarnings:壓制警告code

發現的問題:
不一樣的註解只能在不一樣的位置使用(方法上、字段上、類上)對象

3.自定義註解(瞭解)
1)怎樣去編寫一個自定義的註解
2)怎樣去使用註解
3)怎樣去解析註解-----使用反射知識接口

(1)編寫一個註解
關鍵字:@interface
註解的屬性:
語法:返回值 名稱();
注意:若是屬性的名字是value,而且註解的屬性值有一個 那麼在使用註解時能夠省略value內存

註解屬性類型只能是如下幾種
1.基本類型

2.String
        3.枚舉類型
        4.註解類型
        5.Class類型
        6.以上類型的一維數組類型

(2)使用註解
在類/方法/字段 上面是@XXX

(3)解析使用了註解的類
介入一個概念:元註解:表明修飾註解的註解,做用:限制定義的註解的特性
@Retention
SOURCE: 註解在源碼級別可見
CLASS:註解在字節碼文件級別可見
RUNTIME:註解在整個運行階段均可見
@Target
表明註解修飾的範圍:類上使用,方法上使用,字段上使用
FIELD:字段上可用此註解
METHOD:方法上能夠用此註解
TYPE:類/接口上可使用此註解

注意:要想解析使用了註解的類 , 那麼該註解的Retention必須設置成Runtime

關於註解解析的實質:從註解中解析出屬性值

字節碼對象存在於得到註解相關的方法
isAnnotationPresent(Class<? extends Annotation> annotationClass) : 判斷該字節碼對象身上是否使用該註解了
getAnnotation(Class annotationClass) :得到該字節碼對象身上的註解對象

3、動態代理
1.什麼是代理(中介)
目標對象/被代理對象 ------ 房主:真正的租房的方法
代理對象 ------- 黑中介:有租房子的方法(調用房主的租房的方法)
執行代理對象方法的對象 ---- 租房的人

流程:咱們要租房----->中介(租房的方法)------>房主(租房的方法)
抽象:調用對象----->代理對象------>目標對象
2.動態代理
動態代理:不用手動編寫一個代理對象,不須要一一編寫與目標對象相同的方法,這個過程,在運行時 的內存中動態生成代理對象。------字節碼對象級別的代理對象

動態代理的API:
在jdk的API中存在一個Proxy中存在一個生成動態代理的的方法newProxyInstance
static Object newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h)

返回值:Object就是代理對象
參數:loader:表明與目標對象相同的類加載器-------目標對 象.getClass().getClassLoader()
interfaces:表明與目標對象實現的全部的接口字節碼對象數組
h:具體的代理的操做,InvocationHandler接口

注意:JDK的Proxy方式實現的動態代理 目標對象必須有接口 沒有接口不能實現jdk版動態代理

相關文章
相關標籤/搜索