Using AtomicLong in a REST Controller

Arian :

Is the atomic integer in the following piece of code shared between different REST calls? What if it was static?

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));
    }
}
Andreas :

It is shared if the controller is a singleton.

Since this looks like Spring MVC (you didn't say), and since a @Controller class by default is a singleton, then the answer is:

Yes, the atomic integer is shared between different REST calls.

It doesn't have to be static.

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=357456&siteId=1