【发布时间】:2019-07-03 16:44:36
【问题描述】:
我正在尝试从由函数构建的字符串构建端点值,如下所示:
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);
}
}
@PostMapping(value = storeEndpoint) 行导致错误 The value for annotation attribute PostMapping.value must be a constant expression。我正在处理的一个项目有大量相似的端点名称,并且可以从我能够使用endpointBuilder() 中受益,尤其是在 REST 控制器及其单元测试之间保持名称一致,但我一直在弄清楚如何让它起作用。下面给出了此示例代码的其余部分。
Application.java
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
Manager.java
@Component
public class Manager {
private List<String> storage;
@Autowired
public Manager() {
this.storage = new ArrayList<String>();
}
public void storeSomething(String str) {
storage.add(str);
}
}
如果可能的话,我该如何完成我想做的事情?如果不可能,有没有其他方法可以达到类似的效果?
【问题讨论】:
-
你的问题是......?