Управление бобами Spring Singleton - PullRequest
0 голосов
/ 26 апреля 2018

Существует сценарий, в котором у нас открыто 50 браузеров, обращающихся к приложению, если существует одноэлементная область (то есть один компонент на контейнер), то как одноэлементный компонент является общим для всех экземпляров потоков

илиесли один объект доступен только одному браузеру (клиенту), тогда все остальные клиенты будут простаивать в ожидании, что является плохим дизайном

Может ли какой-то орган предложить ответ

1 Ответ

0 голосов
/ 26 апреля 2018

Для bean-компонентов без сохранения состояния иметь единственный экземпляр ("singleton") можно:

@Component
public class MyManager {

    public void doStuff();
}

Любое количество клиентов (браузеров) может вызывать doStuff(), не влияя друг на друга, пока doStuff()не управляет состоянием.

Для bean-компонентов с состоянием, которые управляют состоянием пользователя, вы можете использовать bean-объекты сессионной области :

@SessionScope
@Component
public class UserPreferences {
    private String username;

    public setUsername(String username) {
        this.username = username;
    }
    //...
}

Компонент UserPreferences создается один разза сеанс HTTP.Следовательно, каждый клиент (браузер) получает свой собственный объект.

В обоих случаях один клиент (браузер) не должен ждать завершения обработки для других клиентов.

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