Spring MVC Когда мне следует использовать Scope («прототип»)? - PullRequest
0 голосов
/ 12 июня 2018

О SpringMVC Controller singleton Тогда несколько потоков запрашивают один и тот же метод в одном и том же классе Controller, будет ли поток безопасным?если безопасно Тогда когда мы будем использовать «прототип»?Синглтон так хорош

1 Ответ

0 голосов
/ 12 июня 2018

При обсуждении областей действия bean-компонентов состояние документов Spring:

... использовать область действия прототипа для всех bean-компонентов с состоянием и единственную область действия для bean-объектов без состояния.

  1. Контроллеры с прототипом имеют состояние.

Да, локальные переменные контроллера (объявленные в методах) являются поточно-ориентированными, но переменные его экземпляра (переменные уровня класса) НЕ используются в bean-объектах синглтонной области.Если вы хотите сохранить состояние на уровне контроллера, используйте область действия прототипа.

Кроме того, все усложняется, когда у контроллера есть зависимости от bean-объектов в области действия прототипа.После того, как зависимость установлена, она НЕ будет сброшена после создания нового bean-объекта с прототипом, что в первую очередь отрицательно скажется на том, чтобы иметь эту зависимость bean-объекта с прототипом.

Вы не можетеЗависимость - внедрить bean-объект с прототипом в ваш синглтон-бин, потому что это внедрение происходит только один раз, когда контейнер Spring создает экземпляр синглтон-компонента и разрешает и внедряет его зависимости.Если вам нужен новый экземпляр компонента-прототипа во время выполнения более одного раза, см. Внедрение метода.

Возможно, вы захотите быть осторожным с внедрением метода, потому что это довольно продвинутая функция.Так еще одна причина, по которой кто-то может захотеть использовать контроллеры с прототипом?

Контроллеры с прототипом позволяют вам иметь истинные зависимости bean-объекта с прототипом без необходимости иметь дело с прокси-сервером CGLIB и внедрением метода.

Однако учтите, что производительность, которую ваше приложение может понизить, используяконтроллеры с прототипом.

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