data duplication during parallel calls the same service springboot


I have a Controler he call a serviceA

ServiceA serviceA;

public @ResponseBody
ResponseEntity<List<A>> getlistA(@RequestBody RequestA requestA) {
    List<RequestA> requestsListA = new ArrayList<>();

    return new ResponseEntity<>(serviceA.getListA(requestsListA), HttpStatus.OK);

And the serviceA is annotated with @Service

public class ServiceA {

When I send two requests in parallel I find the data from the response of the first request in the response of the second request.

Example :
If I run two requestd not in parallel:

  • respons of request A: object1, object2, object3
  • respons of request B: object4 , object5

If I run two requestd in parallel:

  • Result Query A: object1, object2, object3, object4, object5
  • Result Query B: object1, object2, object3, object4, object5
If I have a class that is annotated with @Service, Spring create one instance of this to be shared in the JVM?
Or will every consumer class that autowires the service will get a new instance of the service?

Is it possible that for each time when I call the service it is forced to create a new instance

thank you

when I send two requestd in parallel i have all response merged . it's like singleton


It sounds like your issue might be inside of the serviceA. Whenever you use the @Service annotation on a class you can also define the spice of the component bean that service is creating by using the @Scope annotation. Without adding this last scope part the default for service is a singleton bean. If you scope it you can change this to be a prototype and that will give you one instance per request. With all this said, I don’t think this is the way to go for you.

The real issue is that it sounds like you have a data leak between API calls which must mean you are updating a global/static variable somewhere which is causing the issue you are seeing. Please provide more detail on the service logic for further help.

Answered By – Games3D

This Answer collected from stackoverflow, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply

(*) Required, Your email will not be published