请问我像动态地修改@ApiOperation("远程测试")注解的value的值,然后怎么在swagger中呈现出来

osc_96542561 发布于 2021/11/05 10:18
阅读 394
收藏 0

开源之夏第三届火热来袭,高校学生参与赢万元奖金!>>>

@ApiOperation("远程测试")
@GetMapping("/test")
public String test() throws NoSuchMethodException, NoSuchFieldException, IllegalAccessException {

    Method method = this.getClass().getMethod("test");

    ApiOperation apiOperation = method.getAnnotation(ApiOperation.class);


    //获取 foo 这个代理实例所持有的 InvocationHandler
    InvocationHandler handler = Proxy.getInvocationHandler(apiOperation);
    // 获取 AnnotationInvocationHandler  memberValues 字段
    Field hField = handler.getClass().getDeclaredField("memberValues");
    // 因为这个字段事 private final 修饰,所以要打开权限
    hField.setAccessible(true);
    // 获取 memberValues
    Map memberValues = (Map) hField.get(handler);
    // 修改 value 属性值
    memberValues.put("value", "增加");

    String s = apiOperation.value();
    log.debug(":::{}", s);
    return "success";
}

我更改了@ApiOperation("远程测试")里的value值为”增加“,可是刷新doc.html页面注解并没有改变

加载中
0
回头陌路
DocumentationCache 用这个
0
回头陌路

接着说一下,注解是在启动过程中就会解析形成一系列的文档描述对象。

实际上请求/v2/api-docs是通过获取DocumentationCache中缓存的文档对象生成的json结构返回,故可通过以下注入之后获取文档描述,自己找到对应描述修改即可。

@Autowired
DocumentationCache documentationCache;//文档对象缓存
0
叶666
叶666

修改这个对象后,如何更新网页上的数据呢,并没有变呀

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部