java – 自动将Spring @RequestMapping注释记录到一个位置?

Javadoc非常适合扫描所有源文件并创建HTML页面来查看它.我想知道是否有一个类似的工具可以通过所有的Spring控制器并收集所有已经使用@RequestMapping注释的方法生成一个列出它们的HTML页面.类似于伪站点地图,供开发人员确保控制器的唯一性和标准化.

如果已经在别处问过这个问题,我道歉.我无法想出一套适当的搜索条件来提供有用的结果.

最佳答案
这是一个非常好的问题,我经常会错过(并实现)这样的功能.

使用构建工具

我要做的是运行Maven(或ant)并在编译后执行任务

>读取所有类(可能包含可配置的包列表)
>迭代这些类的所有方法
>读取注释
>并将输出写入HTML

使用注释处理

但我想这是一个场景,其中annotation processing也可能是一种方法.通常,您必须使用一些内部API来完成API中的操作,但使用Filer.createResource(...)实际上应该可以开箱即用.

这是一个基本的实现:

public class RequestMappingProcessor extends AbstractProcessor{

    private final MapIoUtils.closeQuietly(writer)
            // with Guava: Closeables.close(writer,rethrow)
            // with plain Java this monstrosity:
            try{
                if(writer != null){
                    writer.close();
                }
            } catch(final IOException e){
                if(!threw){
                    throw new IllegalStateException(e);
                }
            } finally{
            }
        }
    }

    private void addMapping(final RequestMapping mapping,final TypeElement annotatedElement,final RoundEnvironment roundEnv){
        final String[] values = mapping.value();
        for(final String value : values){
            map.put(
                value,annotatedElement.getQualifiedName().toString()
            );
        }
    }

}

相关文章

Spring Cloud为Spring Boot应用程序提供Netflix OSS集成。 提供的功能模块包括服务发现(Eureka),断路...
Spring Cloud 学习笔记;maven配置;入门学习;基于Spring Boot 实现;服务端配置,客户端配置;
可以毫不夸张地说,这篇文章介绍的 Spring/SpringBoot 常用注解基本已经涵盖你工作中遇到的大部分常用的...
Spring中各种方式进行日期时间处理,有作用于单个实体的,也有作用于全局的,有作用于请求入参的,有作...
跨域资源共享(Cross-origin resource sharing)(CORS)是W3C的标准,大部分的浏览器都实现了这个标准...
Spring Boot使创建基于Spring的应用程序变得轻松,大部分的SpringBoot应用程序都只需要很少的Spring配置...