java - 在 SpringBoot 项目的 RestController 中使用静态变量

标签 java spring spring-mvc spring-boot

我有一个带有一些 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/

相关文章:

java - 来自 Java List<List<Object>> 的 Protobuf 消息

java - 在 php 中登录到服务器端时在 android 中进行 session 处理

java - WebDataBinder#getObjectName() 可以返回 null 吗?

spring - 为什么 beans 会被拒绝以及未识别出 URL 路径意味着什么?

java - 将无状态 session bean 注入(inject) Seam 2.2 中的 EntityHome 派生后引发空指针异常

spring - zk-grails与Spring安全性集成

javascript - 使用 Spring mvc 和 Angular JS 显示数据库中的图像列表

java - Spring RestController - HTTP Status 400 客户端发送的请求在语法上不正确

Spring Restful 服务与 Spring Boot - NoSuchBeanDefinitionException

Java 可执行 jar。这段代码的作用是什么?