娉ㄨВ浼氬湪class瀛楄妭鐮佹枃浠朵腑瀛樺湪錛屽湪榪愯鏃跺彲浠ラ氳繃鍙嶅皠鑾峰彇鍒?/span>
2.2銆丂Target錛氬畾涔夋敞瑙g殑浣滅敤鐩爣
@Target(ElementType.TYPE) 鎺ュ彛銆佺被銆佹灇涓俱佹敞瑙?/span>
@Target(ElementType.FIELD) 瀛楁銆佹灇涓劇殑甯擱噺
@Target(ElementType.METHOD) 鏂規硶
@Target(ElementType.PARAMETER) 鏂規硶鍙傛暟
@Target(ElementType.CONSTRUCTOR) 鏋勯犲嚱鏁?/span>
@Target(ElementType.LOCAL_VARIABLE) 灞閮ㄥ彉閲?/span>
@Target(ElementType.ANNOTATION_TYPE) 娉ㄨВ
@Target(ElementType.PACKAGE)
鍖?/span>
2.3銆丂Document錛氳鏄庤娉ㄨВ灝嗚鍖呭惈鍦╦avadoc涓?/h4>2.4銆丂Inherited錛氳鏄庡瓙綾誨彲浠ョ戶鎵跨埗綾諱腑鐨勮娉ㄨВ
3銆侀氳繃鍙嶅皠璇誨彇娉ㄨВ
package java.lang.reflect;
import java.lang.annotation.Annotation;
public interface AnnotatedElement {
/**鍒ゆ柇璇ュ厓绱犱腑鏌愪釜娉ㄨВ綾誨瀷鏄惁瀛樺湪*/
boolean isAnnotationPresent(Class<? extends Annotation> annotationClass);
/**鑾峰緱璇ュ厓绱犱腑鏌愪釜娉ㄨВ綾誨瀷鐨勬敞瑙?/span>*/
<T extends Annotation> T getAnnotation(Class<T> annotationClass);
/**鑾峰緱璇ュ厓绱犱腑鎵鏈夊彲瑙佺殑娉ㄨВ錛屽寘鍚戶鎵垮緱鍒扮殑娉ㄨВ*/
Annotation[] getAnnotations();
/**鑾峰緱璇ュ厓绱犺嚜韜粈涔堢殑娉ㄨВ錛屼笉鍖呭惈緇ф壙寰楀埌鐨勬敞瑙?/span>*/
Annotation[] getDeclaredAnnotations();
}
java.lang.Package
java.lang.Class
java.lang.reflect.Construtor
java.lang.reflect.Field
java.lang.reflect.Method
鍧囧疄鐜頒簡璇ユ帴鍙o紝鎵浠ユ垜浠彲浠ラ氳繃鍙嶅皠鑾峰彇鍒?Class銆丆onstrutor銆丗ield銆丮ehtod絳夛紝鐒跺悗鍐嶉氳繃涓婅堪鎺ュ彛鏂規硶錛岃幏寰椾綔鐢ㄥ湪榪欎簺鍏冪礌涓婄殑娉ㄨВ銆?br />涓嬮潰鏄疪equestParam娉ㄨВ鐨勪嬌鐢紝涓轟究浜庢紨紺猴紝鐣ヤ綔淇敼錛岃org.springframework.web.bind.annotation.support.HandlerMethodInvoker婧愮爜
Method handlerMethod = *****;
Annotation[] paramAnns = handlerMethod.getParameterAnnotations();
String paramName = null;
boolean required = false;
String defaultValue = null;
for (Annotation paramAnn : paramAnns) {
if (RequestParam.class.isInstance(paramAnn)) {
RequestParam requestParam = (RequestParam) paramAnn;
paramName = requestParam.value();
required = requestParam.required();
defaultValue = parseDefaultValueAttribute(requestParam.defaultValue());
annotationsFound++;
}
// *******鍏朵粬澶勭悊*******************
}
4銆佸父瑙佹敞瑙g殑璇存槑鍙婁嬌鐢?/h2>@Override :@Target(ElementType.METHOD) @Retention(RetentionPolicy.SOURCE) 璇存槑鏂規硶鏄鐖剁被鏂規硶鐨勮鐩栵紝鐢ㄤ簬緙栬瘧鍣ㄧ紪璇戞椂榪涜媯鏌?br />@Deprecated: @Documented @Retention(RetentionPolicy.RUNTIME) 鐢ㄤ簬寤鴻涓嶈浣跨敤鏌愬厓绱?br />@SuppressWarnings錛欯Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE}) @Retention(RetentionPolicy.SOURCE)
璇存槑瀵硅鎵規敞鐨勪唬鐮佸厓 绱犲唴閮ㄧ殑鏌愪簺璀﹀憡淇濇寔闈欓粯