Я использую bean-компоненты с ограниченным объемом запроса для своего приложения, и мне любопытно узнать, как Spring хранит такие bean-компоненты в контексте приложения? связан ли с ним идентификатор http reuqest? любая помощь / документация приветствуются, так как я не нашел об этом много.
Каждый Scope имеет свою собственную реализацию, которая знает, как и где хранятся объекты. Область запроса, реализованная RequestScope, хранит объект в атрибутах запроса (см. источники).
Что Spring делает, когда находит bean-компонент с ограниченной областью видимости (то есть bean-компонент с @Scope или определенной аннотацией, такой как @RequestScope, @SessionScope), так это создает прокси для этого объекта. Прокси-сервер выполнит поиск фактического экземпляра объекта (или создаст его и сохранит), используя ранее упомянутый экземпляр Scope. Затем он передаст вызов метода фактическому экземпляру.
Вы можете проверить это, посмотрев на компонент с областью видимости @Autowired, и вы увидите, что это фактически прокси, а не реальный экземпляр.
Текущий запрос доступен в Spring через RequestContextHolder.
Вы случайно не знаете, где находится код поиска bean-компонентов в проекте spring git? :)