Прицел Singleton в Spring Boot - PullRequest
       12

Прицел Singleton в Spring Boot

0 голосов
/ 28 августа 2018

Так что мой вопрос касается объема синглтона при весенней загрузке. Я работал над несколькими весенними загрузочными проектами, но я никогда не видел, чтобы класс был аннотирован областью Prototype, поэтому я предполагаю, что все определяемые bean-компоненты являются одноэлементными по умолчанию при весенней загрузке. Теперь предположим, что 2 потока обращаются к bean-компоненту, который является одноэлементным, тогда в таком случае, как мы можем быть уверены, что изменения, сделанные одним потоком, не влияют на другой поток, работающий с одним и тем же bean-компонентом.

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

1 Ответ

0 голосов
/ 28 августа 2018

Область действия по умолчанию для любого компонента - это Singleton. Далее, все ваши бобы должны быть разработаны так, чтобы они не имели состояния. Если бин не имеет состояния, вам не нужно беспокоиться о нескольких потоках, обращающихся к одному и тому же бину / синхронизации. Поскольку их данные не будут изменены друг другом.

Что означает отсутствие состояния? Простой способ объяснить это - у вас не должно быть полей уровня класса, которые изменяются различными потоками. Ваше состояние должно быть сохранено в сеансе, хранилище или вашим клиентом.

Наконец, просто чтобы прояснить некоторые мелочи, это не столько вопрос Spring Boot, сколько вопрос Spring Framework / Spring MVC. Область действия Bean является частью Базовой платформы (и Spring MVC предоставляет дополнительные параметры области).

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