//类注解信息
Annotation[] annotations = zwliu.class.getAnnotations();
String s = annotations[0].toString();
System.out.println(s);
//方法的注解信息
Method[] methods = zwliu.class.getMethods();
Annotation[] declaredAnnotations = methods[0].getDeclaredAnnotations();
String s2 = declaredAnnotations[0].toString();
System.out.println(s2);
第二、获取注释
原理:使用jdk自带的javadoc解析类、方法的注释
maven依赖
<dependency>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
<scope>system</scope>
<systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>
</dependency>
* 显示DocRoot中的基本信息
public void show(){
ClassDoc[] classes = rootDoc.classes();
for(ClassDoc classDoc : classes){
System.out.println("------------------------------------------------");
System.out.println(classDoc.name()+
"类的注释:"+classDoc.getRawCommentText());
MethodDoc[] methodDocs = classDoc.methods();
for(MethodDoc methodDoc : methodDocs){
// 打印出方法上的注释
System.out.println("方法名称:"
+methodDoc.name()+"\n"
// +methodDoc.name()+
+"方法注释:"+"\n"
+methodDoc.commentText());
@Test(description = "获取类、方法注释")
public void test2() {
String property = System.getProperty("user.dir");
com.sun.tools.javadoc.Main.execute(new String[] {"-doclet",
Doclet.class.getName(),
"-encoding",
"utf-8",
property+"\\src\\main\\java\\com\\test\\testCase\\zwliu.java",
property+"\\src\\main\\java\\com\\test\\testCase\\zwliu2.java"
show();
看看Reflections(依赖:Guava和Javassist).这是一个已经优化了这一切的图书馆.有一个Reflections#getMethodsAnnotatedWith()适合您的功能要求.这是一个SSCCE,只是copy’n’paste’n’run它.package com.stackoverflow;import java.lang.reflect.Method;import jav...
java反射之获取类或接口上的所有方法及其注解(包括实现的接口上的注解)/*** 获取类或接口上的所有方法及方法上的注解(包括方法实现上的注解以及接口上的注解),最完整的工具类,没有现成的工具类**@paramclz*@paramclzFilter* 仅返回具有指定类注解的类或接口中的方法,默认不过滤*@parammethodFilter* 仅返回具有指...
Class.getAnnotations() 获取所有的注解,包括自己声明的以及继承的
Class.getAnnotation(Class< A > annotationClass) 获取指定的注解,该注解可以是自己声明的,也可以是继承的
Class.getDeclaredAnnotations() 获取自己声明的注解
Method
Method.getAnnotations() 获取所有的注解,包括自己声明的以及继承的
Method.
它的形式跟接口很类似,不过前面多了一个 @ 符号。上面的代码就创建了一个名字为 TestAnnotaion 的注解。你可以简单理解为创建了一张名字为 TestAnnotation 的标签。
2. 注解的应用
创建一个类 Test,然后在类定义的地方加上 @TestAnnotatio
当使用spring AOP时,判断目标方法上的注解进行相关操作,如缓存,认证权限等自定义注解packagecom.agent.annotation;importjava.lang.annotation.ElementType;importjava.lang.annotation.Retention;importjava.lang.annotation.RetentionPolicy;importj...
最近在加深注解这块的理解,很多框架都使用到了注解。直接上代码:注解的实现类Anno.javapackage com.robot.test;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import ja...
本文实例讲述了Java基于反射机制实现全部注解获取的方法。分享给大家供大家参考,具体如下:一 代码class Info{//给mytoString方法加了2个内建Annotation@Deprecated@SuppressWarnings(value = "This is a waring!")public String mytoString(){return "hello world";}}cl...
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time...
public class ParamTestController {
@PostMapping("/upload")
public void upload(@RequestParam("userId") long userId, @RequestParam(value = "file", required = false) Multipar
此处用到了反射, 还有java.lang下的两个方法
java.lang.Package.isAnnotationPresent(Class<? extends Annotation> annotationClass)
如果指定类型的注释存在于此元素上,方法返回true
@Retention(RetentionPolicy.RUNTIME) // 注解会在class字节码文件中存在,在运行时可以通过反射获取到
@Target({ElementType.FIELD,ElementType.METHOD})//定义注解的作用目标**作用范围字段、枚举的常量/方法
@Documented//说明该注解将被包含在javadoc中
public @interfa
文章目录1. AnnotatedElement接口2. Class 类3. 获取类上的注解
1. AnnotatedElement接口
AnnotatedElement接口表示目前正在此 JVM 中运行的程序的一个已注释元素,该接口允许反射性地读取注释。
该接口主要有如下几个实现类:
Class:类定义
Constructor:构造器定义
Field:类的成员变量定义
Method:类的方法定义
Package:类的包定义
调用AnnotatedElement对象的如下方法可以访问Annotation信
1. 需求描述
在 springboot前后端分离后权限原理浅谈 基础上,在涉及到接口权限的时候,必然需要获取Controller层的接口列表,作为数据库中权限表的记录。比如,在权限表中,存储如下信息:
考虑到接口测试的方便,大多数springboot会集成Swagger2或者Swagger3进行接口测试和生成接口文档。如下图所示的注解,就是使用了Swagger2,需要添加的@ApiOperation注解。
假设Controller类中,都添加了如上图所示的两个注解,即都统一用post请求。那么,如何获