弹簧控制器路径不被视为常量

时间:2019-06-25 08:36:39

标签: java spring spring-boot controller constants

我想用以下路径变量定义一个Spring的控制器路径:

private static final String IDS_REGEX = "[" + EnumSet.allOf(MyIdsEnum.class).stream().map(MyIdsEnum.class::getValue)
  .collect(Collectors.joining("|")) + "]";
public static final String MY_PATH = "/path/{id:" + IDS_REGEX + "]}";

然后在我的控制器中:

 @PostMapping(value = MY_PATH, produces = MediaType.APPLICATION_JSON_VALUE)

但是,IntelliJ在PostMapping值中引发错误:

Attribute value must be constant

路径最终已经是静态的,我该怎么做才能将其转换为常量?

预先感谢

1 个答案:

答案 0 :(得分:0)

它必须是一个编译时间常数。

编译时常量表达式是表示原始类型或String的值的表达式,该值不会突然完成,并且仅使用以下内容组成:

  • 原始类型的文字和字符串类型的文字
  • 转换为原始类型,转换为String
  • [...]运算符[...]
  • 将包含的表达式为常量表达式的表达式进行解析。
  • 引用常量变量的简单名称。
  • 格式为TypeName的合格名称。引用常量变量的标识符。