通過之前的學習,可以學會自定義乙個註解。但是定義之後要怎麼使用?
註解本質上是乙個介面,所以在執行時,會動態地生成乙個實現了這個介面地類,並且將他例項化。
怎麼實現介面的方法?
在使用註解時,如果註解有沒有預設值的屬性,則一定要給屬性顯式的賦值。所以,使用時,每個註解的屬性都有確定的值。動態的實現這些方法時,只需要返回這些值即可
舉個例子:
自定義註解:
@retention(retentionpolicy.runtime)
@target(elementtype.type)
public @inte***ce testannotation
使用註解:
@testannotation(value = "hello")
public class test
動態生成類似於下面的類:
class testannotationimpl implenments testannotation
}
因為動態的生成了乙個註解的物件,所以,只要「拿到」這個物件,就可以呼叫這個物件(註解)的方法來獲取值。(例如上面呼叫value()方法就可以獲得值)
獲取註解物件,需要通過反射。只要拿到註解修飾的部分的反射物件,就可以拿到註解物件。
例如,上面的註解修飾的時test類,所以通過test.class物件就可以拿到註解物件。
testannotation annotation = test.class.getannotation(testannotation.class);
除了class物件,還可以通過method物件獲得修飾方法的註解物件,通過filed物件獲得修飾字段的註解物件。
上面已經說過,拿到的註解物件實現了註解中的方法,只要通過呼叫註解(介面)中的方法,就可以得到值。
@testannotation(value = "hello")
public class test
}
spring註解解析
component respository dao層 service service層 controller controller層 autowised 根據型別注入 如果載入set方法上面 那麼引數會根據型別進行注入 qualifer x autowised 注入時候如果有多個物件 可以再加上 q...
Column註解解析
功能 column註解用來標識實體類中屬性與資料表中字段的對應關係 語法 column columndefinition bigint 18 comment 公司id private long ouid columndefinition表示建立表時,該欄位建立的sql語句,一般用於通過entity生...
SpringMVC註解解析
作用 用於建立請求url和處理請求方法之間的對應關係 位置 屬性 例如 1.mvc命名空間引入 命名空間 xmlns context xsi schemalocation spring context.xsd 2.元件掃瞄 springmvc基於spring容器,所以在進行springmvc操作時,...