Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using AtomicLong in a REST Controller

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));
    }
}
like image 355
Arian Avatar asked Nov 03 '25 09:11

Arian


1 Answers

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.

like image 105
Andreas Avatar answered Nov 05 '25 00:11

Andreas