将多个注释合并为一个以避免重复它们
我正在使用Spring MVC来实现各种REST服务。 对于文档,我使用的是Swagger。
这很好用,文档看起来很好,非常实用。 我唯一的问题是文档的注释真的挤满了控制器类,尤其是错误代码注释。
例:
@ApiErrors(value = { @ApiError(code = 123, reason = "Reason123"), @ApiError(code = 124, reason = "Reason124"), @ApiError(code = 125, reason = "Reason125"), @ApiError(code = 126, reason = "Reason126"), @ApiError(code = 127, reason = "Reason127") }) public void exampleFunctionImplementation() { }
在许多情况下,这会导致大量注释,其中真正的应用程序代码隐藏在其间的某处。 此外,这个注释集经常被重复,因为许多方法可能返回相同的错误代码集。
有没有选择通过将注释列表定义为其他类文件中的常量来缩短这一点? 或许我可能忽略了一些更简单的事情?
我尝试在某处定义@ApiError
项的数组,但这不会编译:
ApiError[] array = {ApiError(code = 123, reason = "Reason123")};
如果有人能给我一个如何解决这个问题的提示,我会很高兴,在此先感谢!
注释成员只有有限的类型( JLS 9.6)。
如果在注释类型中声明的方法的返回类型不是以下之一,则是编译时错误:基本类型,字符串,类,类的任何参数化调用,枚举类型(第8.9节),注释类型或数组类型(第10节),其元素类型是前面的类型之一。
它们的值必须是常量表达式(JLS 9.7)。 该标准使用术语“ 相称” 。
T是一个数组类型E [],并且:
V是一个ElementValueArrayInitializer,V中的每个ElementValue(类似于数组初始化器中的VariableInitializer)与E相当; 要么
V是与E.相称的ElementValue。
V的类型与T分配兼容(第5.2节),此外:
如果T是基本类型或String,则V是常量表达式(第15.28节)。
V不为空。
如果T是Class,或者是Class的调用,则V是类文字(第15.8.2节)。
如果T是枚举类型,则V是枚举常量。
您的数组不是常量表达式,因此您的代码将无法编译。 如果您预计有大型注释列表,也许还有另一种方法可以执行此任务。 我不知道Swagger,所以你可能无法避免这种情况。