本文目錄一覽:
Java ,自定義註解怎麼使用
java中自定義註解的使用方法:
首先聲明一個接口,並未它添加註解內容!
package testAnnotation;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Documented
@Retention(RetentionPolicy.RUNTIME)
public @interface Person{
String name();
int age();
}
2、然後利用反射機制查看類的註解內容
package testAnnotation;
@Person(name=”xingoo”,age=25)
public class test3 {
public static void print(Class c){
System.out.println(c.getName());
//java.lang.Class的getAnnotation方法,如果有註解,則返回註解。否則返回null
Person person = (Person)c.getAnnotation(Person.class);
if(person != null){
System.out.println(“name:”+person.name()+” age:”+person.age());
}else{
System.out.println(“person unknown!”);
}
}
public static void main(String[] args){
test3.print(test3.class);
}
}
運行結果,讀取到了註解的內容
testAnnotation.test3
name:xingoo age:25
java 自定義的註解有什麼作用
自定義註解,可以應用到反射中,比如自己寫個小框架。
如實現實體類某些屬性不自動賦值,或者驗證某個對象屬性完整性等
本人自己用過的驗證屬性值完整性:
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface IgnoreProperty {
}
然後實體類中:
public class TarResearch implements Serializable{
@IgnoreProperty
private static final long serialVersionUID = 1L;
@IgnoreProperty
private Integer researchId;
@IgnoreProperty
private TarUser userId;
private String version;
private String grade;
….
}
然後action類中
// 驗證數據完整性
ClassTarResearch userClass = TarResearch .class;
Field[] field = userClass.getDeclaredFields();
for (int i = 0; i field.length; i++) {
if (field[i].getAnnotation(IgnoreProperty.class) != null) {
continue;
}
String fie = field[i].getName().substring(0, 1).toUpperCase()
+ field[i].getName().substring(1);
Method method = userClass.getMethod(“get” + fie);
Object obj = method.invoke(u);
if (obj == null) {
sendResponseMsg(response, “數據錯誤”);
return null;
}
}
springboot 面向切面編程之使用自定義註解
我們知道使用@Pointcut註解定義切點,它的value屬性可以是 切點表達式 或者 註解的全限定名 ;若使用註解的方式,直接在目標切入點方法上加上自定義註解即可納入AOP的管理
在創建自定義註解時有看到三個註解,分別了解它們的作用
我們先來看看這個枚舉類java.lang.annotation.ElementType就是定義註解使用的地方。比如 @Target(ElementType.METHOD) 就是只能用在方法上了。不過可以同時指定多個ElementType的屬性來達到既可以用在方法上也可以用在類上的目的: @Target({ElementType.TYPE, ElementType.METHOD})
Documented註解表明這個注釋是由 javadoc記錄的。 如果一個類型聲明被注釋了文檔化,它的注釋成為公共API的一部分。
再來看這個枚舉類 java.lang.annotation.RetentionPolicy。該類主要功能是定義註解的 生命周期
創建註解類TestAnnotation。裏面有一個name參數,默認是no;沒錯,該註解只能用在方法上,不能用在類、接口;而且是運行時類型的
在目標方法上使用註解
創建切面類
最後重啟工程,訪問 和
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/241154.html