最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring @RestController注解組合實現(xiàn)方法解析

 更新時間:2020年06月28日 14:30:05   作者:掙扎一下  
這篇文章主要介紹了Spring @RestController注解組合實現(xiàn)方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

Spring中存在很多注解組合的情況,例如@RestController

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController {

	/**
	 * The value may indicate a suggestion for a logical component name,
	 * to be turned into a Spring bean in case of an autodetected component.
	 * @return the suggested component name, if any (or empty String otherwise)
	 * @since 4.0.1
	 */
	@AliasFor(annotation = Controller.class)
	String value() default "";

}

@RestController就是@Controller、@ResponseBody兩個注解的組合,同時產(chǎn)生兩個注解的作用。

本人一開始以為這是Java的特性,Java能夠通過注解上的注解實現(xiàn)自動組合注解的效果。于是寫了這樣一段代碼

/**
 * @author Fcb
 * @date 2020/6/23
 * @description
 */
@Documented
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyComponent {
}
/**
 * @author Fcb
 * @date 2020/6/23
 * @description
 */
@Documented
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@MyComponent
public @interface MyController {
}
@MyController
public class AnnotatedService {
}

結(jié)果測試發(fā)現(xiàn)翻車

/**
 * @author Fcb
 * @date 2020/6/23
 * @description
 */
public class Test {

  public static void main(String[] args) {
    Annotation[] annotations = AnnotatedService.class.getAnnotations();
    for (Annotation anno : annotations) {
      System.out.println(anno.annotationType());
      System.out.println(anno.annotationType() == MyComponent.class);
    }
  }
}

打印結(jié)果如下:

interface com.example.demo.anno.MyController
false

經(jīng)過本人查閱資料,發(fā)現(xiàn)我想要的那個注解組合注解的功能是Spring自己實現(xiàn)的。。通過Spring中的AnnotationUtils.findAnnotation(類,注解)方法來判斷某個類上是否能找到組合的注解。

比如現(xiàn)在我想知道AnnotatedService這個類上是否存在@MyComponent注解,畢竟這是我一開始的目的(通過組合減少注解),我可以調(diào)用一下代碼

/**
 * @author Fcb
 * @date 2020/6/23
 * @description
 */
public class Test {

  public static void main(String[] args) {
    Annotation[] annotations = AnnotatedService.class.getAnnotations();
    System.out.println(AnnotationUtils.findAnnotation(AnnotatedService.class, MyComponent.class));
  }
}

打印如下:

@com.example.demo.anno.MyComponent()

假如傳入的注解是一個不存在的值,則會返回null,示例如下:

/**
 * @author Fcb
 * @date 2020/6/23
 * @description
 */
public class Test {

  public static void main(String[] args) {
    Annotation[] annotations = AnnotatedService.class.getAnnotations();
    System.out.println(AnnotationUtils.findAnnotation(AnnotatedService.class, OtherAnno.class));
  }
}

控制臺打?。?/p>

null

總結(jié):Java本身沒有實現(xiàn) 通過標(biāo)記注解 來組合注解的功能。假如我們自定義注解時需要可以使用Spring的AnnotationUtils.findAnnotation()的方法幫助我們實現(xiàn)。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

上饶市| 巴彦县| 深泽县| 阿瓦提县| 全椒县| 高清| 唐山市| 长治市| 曲阳县| 东辽县| 卓资县| 遵义县| 望城县| 兴安盟| 东方市| 南木林县| 河北省| 翼城县| 扎赉特旗| 葫芦岛市| 长乐市| 孝昌县| 东乌珠穆沁旗| 大洼县| 若尔盖县| 永泰县| 天津市| 界首市| 通江县| 清河县| 千阳县| 大英县| 同仁县| 宝鸡市| 登封市| 松溪县| 西贡区| 镇康县| 彰化县| 麻城市| 荣昌县|