Java. Spring. Многопользовательский режим

206
04 сентября 2018, 21:10

Подскажите, что прочитать, чтоб понять как Spring работает в многопользовательском режиме?

В частности, есть у меня Spring-MVC web-приложение. У него куча разных бинов, все они взаимодействуют друг с другом.

Есть бин (пусть будет - ConnectApi), который отвечает за подключение к удаленному серверу по API.

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

Мне нужно самостоятельно описать , что для каждой сессии создавать свой экземпляр бина или спринг сам не дурак?

Answer 1

По умолчанию Spring все бины создаёт в скоупе singleton - то есть, один экземпляр на приложение. Для веб-приложений можно заставить Spring создавать новый экземпляр бина на каждую сессию или запрос. Сделать это можно, пометив бин аннотацией @Scope со значением "session" или "request" соответственно. Если используется Spring Boot, то можно использовать аннотации @SessionScope и @RequestScope, которые являются сокращёнными версиями @Scope("session") и @Scope("request") соответственно. Если используется XML-конфиг, то нужно к описанию бина добавить параметр scope:

<bean id="userPreferences" class="com.foo.UserPreferences" scope="session"/>

Подробнее о скоупах бинов

READ ALSO
Сравнить переменные в объектах JAVA

Сравнить переменные в объектах JAVA

Существуют шесть объектов - кубов у которых есть объем(сторона задана в ручную)Как мне отсортировать объемы кубов и вывести информацию в табличном...

223
Не отправляются файлы на сервер JSF

Не отправляются файлы на сервер JSF

Есть JSF страница (создание статьи) те

184
Как проверить содержимое строчки

Как проверить содержимое строчки

Есть строчка: String msg = "test";

184
Запись чисел в лист в виде массива

Запись чисел в лист в виде массива

Делаю реализацию игры Mastermind взял за основу алгоритм Кнута

190