@Target
此註解用於表示當前註解的使用範圍,@Target({ElementType.TYPE})就代表着@Service這個註解是專門用來註解到類、接口、或者枚舉類型上面的,當在方法上面加這個註解時,就會報錯
@Retention
此註解用於表示當前註解的生命週期,說人話就是這個註解作用會保留到什麼時候,如@Retention(RetentionPolicy.RUNTIME)就表示在程序運行期間依然有效,此時就可以通過反射拿到註解的信息
@Documented
當被此註解所註解時,使用javadoc工具生成文檔就會帶有註解信息
@Inherited
此註解與繼承有關,當A註解添加此註解後,將A註解添加到某類上,此類的子類就會繼承A註解。
@Repeatable
註解顧名思義是擁有可以重複註解的能力。想象這樣一個場景,我們需要定時執行某個任務,需要在每週一和週三執行,並且這個時間是可以靈活調整的,此時這個元註解就能派上用場
@Target:註解的作用目標
@Target(ElementType.TYPE) //接口、類、枚舉
@Target(ElementType.FIELD) //字段、枚舉的常量
@Target(ElementType.METHOD) //方法
@Target(ElementType.PARAMETER) //方法參數
@Target(ElementType.CONSTRUCTOR) //構造函數
@Target(ElementType.LOCAL_VARIABLE)//局部變量
@Target(ElementType.ANNOTATION_TYPE)//註解
@Target(ElementType.PACKAGE) ///包