Почему каждый раз создается новый объект?

Привет. В контроллере есть поле loginProccesor, которое инициализируется при создании контроллера с помощью Dependency Injection (DI). Полагаясь на описание, экземпляры бина LoginProccesor должны существовать в пределах одного запроса. Вопрос заключается в следующем: почему каждый новый HTTP запрос приводит к созданию нового экземпляра бина LoginProccesor, как указывает изменение хэш-кода? Хотя переменная loginProccesor имеет область видимости в рамках запроса, сам контроллер является Singleton. По-идее, контроллер должен создаваться один раз, конструктор вызывается один раз, и экземпляр loginProccesor должен быть создан один раз и внедрен.
  • 5 августа 2024 г. 3:43
Ответы на вопрос 2

Если каждый новый HTTP запрос приводит к созданию нового экземпляра бина LoginProccesor, это может быть вызвано тем, что в настройках DI у вас установлен scope "prototype" для бина LoginProccesor. Scope "prototype" означает, что каждый раз при запросе бина будет создаваться новый экземпляр.

Если вы хотите, чтобы экземпляр LoginProccesor создавался один раз и использовался в рамках одного запроса, вы можете установить scope "request" для бина LoginProccesor. Это означает, что для каждого запроса будет создаваться новый экземпляр бина, который будет использоваться в рамках этого запроса.

Также стоит убедиться, что ваш контроллер не создается заново при каждом запросе. Если это происходит, то, возможно, ваш контроллер настроен неправильно и создается как Singleton для каждого запроса. Убедитесь, что контроллер настроен как Singleton и создается только один раз при загрузке приложения.

Если после проведения вышеуказанных действий проблема не решится, стоит более детально изучить настройки DI и конфигурации вашего приложения, чтобы выявить причину создания нового экземпляра бина LoginProccesor при каждом запросе.
Это не так работает. Фактически внедряется в контроллер не сам бин, а прокси-объект, который в каждом запросе указывает на разный экземпляр LoginProccesor.
Похожие вопросы