我有一个带有一些 Rest Controller 的 SpringBoot 2.0.5.RELEASE 项目。
在我的 Controller 中我有这个方法:
GetMapping(path = "/menu", consumes = "application/json", produces = "application/json")
public ResponseEntity<List<String>> menus() {
List<String> result = Arrays.stream(MenuAlertEnum.values())
.map(MenuAlertEnum::getAlertName)
.collect(Collectors.toList());
return ResponseEntity.ok(result);
}
由于 MenuAlertEnum 是应用程序。常量并且始终具有相同的值我想将其作为静态变量放在 Controller 中以使其更快,但是默认情况下,spring bean 是单例我认为这不是一个好的做法?
最佳答案
除了任何正常的并发问题之外,从单例 bean 访问静态数据应该不会有任何问题。
如果您不想使用静态变量,则可以在 Controller 中使用 @PostConstruct
来初始化局部变量:
private List<String> alerts;
....
@PostConstruct
public void setup() {
alerts = Arrays.stream(MenuAlertEnum.values())
.map(MenuAlertEnum::getAlertName)
.collect(Collectors.toList());
}
关于java - 在 SpringBoot 项目的 RestController 中使用静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52333530/