【发布时间】:2012-04-24 14:31:26
【问题描述】:
我们正在构建某种自动自我描述 REST 服务(实时文档生成)。为此,我们有一个控制器方法,它查找所有控制器 bean 并获取请求映射信息以将它们显示在一个友好的 html 页面中。
为此,我们使用 MetadataReader(通过 CachingMetadataReaderFactory 创建)来获取类的元数据。 当我们获取公共方法的 MethodMetaData 时,我们发现 RequestMapping 注释以及生产和值参数,但方法字段始终是一个空数组,尽管我们在源代码中配置了它并且映射工作。所以信息应该在某个地方。这相当令人费解! :-)
编辑:方法字段为空=> RequestMapping 注释有一个方法字段,它是一个 RequestMethod 对象的数组。如果您尝试从 MethodMetaData 实例中读取它,则它是一个空数组。示例:metadata.getAnnotationAttributes(RequestMapping.class.getName()).get("method")
我尝试在spring框架源码中查找原因,但目前还没有找到原因……
有什么想法吗?
仅供参考:我们使用的是 Spring 3.1
【问题讨论】:
-
但是方法字段总是空的??描述
-
请看编辑部分
-
我不知道您的 MetadataReader 的工作(编码),检查是否有任何其他方式来检索对象信息,因为 @RequestMapping 注释中的方法属性类型是 RequestMethod 数组。即 RequestMethod[]
-
我已经澄清了。当然它是一个空数组而不是一个空变量。我的错。 MetadataReader 是一个弹簧类。
标签: java spring reflection spring-mvc annotations