首页 > 解决方案 > 在 REST 控制器中使用 AtomicLong

问题描述

以下代码中的原子整数是否在不同的 REST 调用之间共享?如果是静态的呢?

public class GreetingController {

    private static final String template = "Hello Docker, %s!";
    private final AtomicLong counter = new AtomicLong();

    @GetMapping("/greeting")
    public Greeting greeting(@RequestParam(value="name", 
        defaultValue="World") String name) {

        return new Greeting(counter.incrementAndGet(),
          String.format(template, name));
    }
}

标签: javaspring-mvcspring-restcontroller

解决方案


如果控制器是单例,它是共享的。

由于这看起来像 Spring MVC (你没有说),并且由于@Controller默认情况下一个类是单例,所以答案是:

的,原子整数在不同的 REST 调用之间共享。

它不必是static


推荐阅读