在 REST 控制器中使用 AtomicLong
Using AtomicLong in a REST Controller
下面这段代码中的原子整数是否在不同的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));
}
}
如果控制器是单例,则共享。
因为这看起来像 Spring MVC (你没说),而且 @Controller
class 默认是单例,则答案为:
是,原子整数在不同的REST调用之间共享。
不一定是static
。
下面这段代码中的原子整数是否在不同的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));
}
}
如果控制器是单例,则共享。
因为这看起来像 Spring MVC (你没说),而且 @Controller
class 默认是单例,则答案为:
是,原子整数在不同的REST调用之间共享。
不一定是static
。