示例:自建的RestController,代码如下
import java.lang.annotation.Annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* 复合注解获取原理
*/
@RestController
public class RestControllerMain {
public static void main(String[] args) {
Annotation[] anns = RestControllerMain.class.getDeclaredAnnotations();
for (Annotation ann : anns) {
Class<? extends Annotation> anc = ann.annotationType();//此处必须使用java.lang.annotation.Annotation的方法
Annotation[] anns2 = anc.getDeclaredAnnotations();
for (Annotation ann2 : anns2) {
System.out.println(ann2.annotationType().getName());
}
}
}
}
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
@interface RestController {
String value() default "something";
}
本文通过自建的RestController示例,深入探讨了复合注解的获取原理。代码演示了如何利用Java反射API遍历类上的所有注解,并进一步获取这些注解上的元注解,为理解Spring框架中注解的实现提供了深入的视角。

2363

被折叠的 条评论
为什么被折叠?



