Spring RequestScope - PullRequest
       7

Spring RequestScope

0 голосов
/ 19 июня 2020

См. Пример ниже. Интересно, будет ли разница, если я укажу объем или нет ниже. Спасибо

@RestController
@RequestScope
@RequestMapping("/api/v1/user")
public class UserResource {

  @GetMapping("/addresscheck")
  public String getAddress() {
    return customer.getAddress();
  }
}


// Here does it matter I define the scope or not? is it still going to be treated as one per request?
@RestController  
@RequestMapping("/api/v1/user")
public class UserResource {

  @GetMapping("/addresscheck")
  public String getAddress() {
    return customer.getAddress();
  }
}

1 Ответ

2 голосов
/ 19 июня 2020

По умолчанию все управляемые компоненты Spring имеют область действия singleton. Таким образом, во второй реализации Spring будет создан только один объект UserResource, и он будет предоставляться каждый раз, когда должен выполняться запрос на указанный URL.

Однако в первой реализации, поскольку вы аннотируют UserResource с помощью @RequestScope, Spring создаст новый объект контроллера для обслуживания каждого запроса. Это означает, что любая информация о состоянии, которую вы можете поддерживать в UserResource, будет потеряна. Все переменные-члены UserResource также будут создаваться заново для каждого запроса.

Хотя мне любопытно, почему вы хотите, чтобы контроллер имел область действия запроса? Не могли бы вы поделиться своим вариантом использования, если возможно?

Вот хорошая статья по этой теме: Spring Bean Scopes

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...