Java 从函数生成端点值-注释属性X的值必须是常量表达式

Java 从函数生成端点值-注释属性X的值必须是常量表达式,java,spring,eclipse,rest,Java,Spring,Eclipse,Rest,我正在尝试从函数生成的字符串生成端点值,如下所示: ManagerController.java @Controller @RequestMapping(value = "/manager/") public class ManagerController { @Autowired Manager manager; public String endpointBuilder(String str) { return "storage/" + str;

我正在尝试从函数生成的字符串生成端点值,如下所示:

ManagerController.java

@Controller
@RequestMapping(value = "/manager/")
public class ManagerController {
    @Autowired
    Manager manager;

    public String endpointBuilder(String str) {
        return "storage/" + str;
    }

    public String storeEndpoint = endpointBuilder("{store}");

    @PostMapping(value = storeEndpoint)
    private ResponseEntity<?> storeSomething(String str) {
        manager.storeSomething(str);
        return new ResponseEntity<>(CREATED);
    }
}
@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);

    }

}
@Component
public class Manager {
    private List<String> storage;

    @Autowired
    public Manager() {
        this.storage = new ArrayList<String>();
    }

    public void storeSomething(String str) {
        storage.add(str);
    }
}
Manager.java

@Controller
@RequestMapping(value = "/manager/")
public class ManagerController {
    @Autowired
    Manager manager;

    public String endpointBuilder(String str) {
        return "storage/" + str;
    }

    public String storeEndpoint = endpointBuilder("{store}");

    @PostMapping(value = storeEndpoint)
    private ResponseEntity<?> storeSomething(String str) {
        manager.storeSomething(str);
        return new ResponseEntity<>(CREATED);
    }
}
@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);

    }

}
@Component
public class Manager {
    private List<String> storage;

    @Autowired
    public Manager() {
        this.storage = new ArrayList<String>();
    }

    public void storeSomething(String str) {
        storage.add(str);
    }
}
@组件
公共班级经理{
私有列表存储;
@自动连线
公共经理(){
this.storage=new ArrayList();
}
公共void storeSomething(字符串str){
存储。添加(str);
}
}
如果可能的话,我该如何完成我想做的事情?如果不可能,是否有其他方法可以达到类似效果?

这是不可能的。发件人:

当且仅当下列条件之一为真时,元素类型
T
与元素值
V
相称:

  • T
    是一种数组类型
    E[]
    并且:

    • V
      是一个ElementValueArrayInitializer,
      V
      中的每个ElementValue(类似于数组初始值设定项中的可变初始值设定项)与
      E
      相称;或

    • V
      是与
      E
      相称的元素值

  • V
    的类型与
    T
    的赋值兼容(§5.2),此外:

    • 如果
      T
      是基本类型或
      String
      ,而
      V
      是常量表达式(§15.28)

    • V
      不为空

    • 如果
      T
      Class
      ,或调用
      Class
      ,且
      V
      是类文字(§15.8.2)

    • 如果
      T
      是枚举类型,
      V
      是枚举常量


本质上,只允许编译时常量作为注释元素的值。

您的问题是。。。?