将多个注释合并为一个,以避免重复

我正在使用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)。

如果在注释类型中声明的方法的返回类型不是以下之一,则是编译时错误:基本类型,String,Class,Class的任何参数化调用,枚举类型(§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,因此您可能无法避免这种情况。

以上是 将多个注释合并为一个,以避免重复 的全部内容, 来源链接: utcz.com/qa/428112.html

回到顶部