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

发布于 2022-05-24 02:11:00 字数 906 浏览 772 评论 2

@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页面注解并没有改变

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

方觉久 2022-05-27 21:51:09

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

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

@Autowired
DocumentationCache documentationCache;//文档对象缓存
阳光下的泡沫是彩色的 2022-05-26 15:37:29
DocumentationCache 用这个
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文