java - 使用全局类或java反射为play框架中的所有 Controller 添加注释

标签 java reflection playframework annotations swagger

要求 - 在现有项目中,我们希望为 REST API 文档引入 swagger。

问题 - 我们无法修改每个 Controller 和方法

因此,寻找一个装饰器,它会自动将注释添加到所有 Controller 类,并且还会根据请求类型为方法添加注释。

尝试使用 java 反射,但找不到任何添加注释的选项。

public <A> A getControllerInstance(Class<A> clazz) {
    Annotation[] annotations = clazz.getAnnotations();
    // This check is used to suppress any annotation if it is not injected
    // using spring DI. Example Security.Authenticated.
    if (clazz.isAnnotationPresent(Component.class))
        return ctx.getBean(clazz);
    else
        return null;
}

public Action onRequest(Request request, Method actionMethod) {
    System.out.println("before each request..." + request.toString());
    Object[] obj = actionMethod.getAnnotations();

    return super.onRequest(request, actionMethod);
}

最佳答案

Swagger UI 基于从服务器获取的 JSON 工作。 因此,与其在运行时添加 swagger 注释,不如从记录所有服务和用法的静态文件中提供 JSON。

关于java - 使用全局类或java反射为play框架中的所有 Controller 添加注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33958176/

相关文章:

java - java 中的 enshingInstance.newMermberClass(args) - 有效的 java 文本

java - 从 org.aspectj.lang.ProceedingJoinPoint 获取模板/通用 java.lang.reflect.Method 对象

java - 在使用 URLClassLoader 加载的类上可靠地查找注释

c# - 用于嵌套类的 Assembly.GetTypes()

linux - Activator Active Stocks 入门应用程序无法运行并出现 java.io.IOException?

jpa - 在 PlayFramework 2/Ebean ORM 中使用@OneToOne,其中 child 和 parent 共享相同的主键

java - Play 框架安装/执行故障排除

java - jetty - 重新加载 jar 中的标签文件

java - MouseListener 和 JTree

java - Java EE 的安全框架,如seam - JSP、Servlet、DAO