java - Spring Controller 路径不被视为常量

标签 java spring spring-boot controller constants

我想使用路径变量定义 Spring 的 Controller 路径:

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 + "]}";

然后在我的 Controller 中:

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

但是,IntelliJ 在 PostMapping 值中抛出错误:

Attribute value must be constant

路径已经是静态最终的,我应该怎样做才能将其变成常量?

提前致谢

最佳答案

它必须是一个编译时常量。

编译时常量表达式是表示基本类型值或不会突然完成的字符串的表达式,并且仅使用以下内容组成:

  • 原始类型的文字和 String 类型的文字
  • 转换为原始类型并转换为 String 类型
  • [...]运算符[...]
  • 带括号的表达式,其包含的表达式是常量表达式。
  • 引用常量变量的简单名称。
  • TypeName 形式的限定名称。引用常量变量的标识符。

关于java - Spring Controller 路径不被视为常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56749939/

相关文章:

Java Hadoop MapReduce 多个键值

java - 为什么我在 spring 工具套件中收到这些错误。我认为这是因为我缺少一些库,但我不确定

java - 按日期字段排序在 Spring Data JPA 中不起作用

Java StompSession 发送消息 - Spring Boot

java - 更改 Spring openapi-generator-maven-plugin 生成的接口(interface)的返回类型

java - 在 java 中解析 IBM 3270 数据

java - 获取由 JNA 中的参数返回的不透明结构

java - 在android中从arraylist创建按钮的新 View

java - 调用依赖微服务

java - 覆盖单个 Spring Boot 测试的属性