ITPub博客

首页 > 应用开发 > > Java反射注解妙用(获取所有接口说明)

Java反射注解妙用(获取所有接口说明)

作者:cdfoxman 时间:2019-10-18 09:45:02 0 删除 编辑

作者:俊俊的小熊饼干

来源:https://www.cnblogs.com/wenjunwei/p/10293490.html

前言

最近在做项目权限,使用shiro实现restful接口权限管理,对整个项目都进行了重构。而权限管理需要用到所有的接口配置,包括接口url地址,接口唯一编码等。想要收集所有的接口信息,如果工程接口很多,工作量可想而知。

这里用了反射,来获取所有接口的信息,接口再多,也不过几秒钟的事。

使用

Auth.java

接口信息对象

主要包括授权地址,权限唯一标识,权限名称,创建时间,请求方式

package com.wwj.springboot.model;

import java.io.Serializable;

import java.util.Date;

public class Auth implements Serializable {

private String authName;

private String authUrl;

private String authUniqueMark;

private Date createTime;

private String methodType;

//get set 省略

}

UserController.java

用户接口,用于测试的接口。

这里使用了标准的restful接口风格,swagger自动API接口,shiro 接口权限注解@RequiresPermissions组合成的一个controller。当然也可以使用其他技术,只要能获取到接口信息就行。

注解不重要,重要的是注解里的信息。

主函数

这里通过反射,获取了UserController的所有接口的说明,并存入数据库中。这是最主要的类。

1.设置扫描的package路径

Reflections reflections =

new Reflections(new ConfigurationBuilder().

setUrls(ClasspathHelper.

forPackage(scanPackage)).

setScanners(new MethodAnnotationsScanner()));

2.获取到扫描包内带有@RequiresPermissions注解的所有方法集合

Set methods = reflections.getMethodsAnnotatedWith(RequiresPermissions.class);

3.通过反射获取类上的注解

method.getDeclaringClass().getAnnotation(RequestMapping.class);

4.通过反射获取方法上的注解

method.getAnnotation(PutMapping.class);

5.获取注解中的某个属性(这里是获取value属性)

method.getAnnotation(PutMapping.class).value();

完整的主函数代码

通过上面所说的方法即可获取到注解中的值,这样就可以获取到我们想要的接口信息了,执行结果如下

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/625/viewspace-3135374/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-04-12

  • 博文量
    237
  • 访问量
    1738