Spring Singleton bean管理

时间:2018-04-26 09:10:57

标签: spring spring-mvc

有一种情况,我们有50个浏览器打开访问应用程序,如果有一个单一作用域(意味着每个容器一个bean),那么如何在所有线程实例之间共享单例bean

或者如果一个对象只与一个浏览器(客户端)共享,那么所有其他客户端都将处于空闲状态,这是一个糟糕的设计

有些机构可以建议回答

1 个答案:

答案 0 :(得分:1)

对于无状态bean,只有一个实例(" singleton")就可以了:

@Component
public class MyManager {

    public void doStuff();
}

只要doStuff()无法管理状态,任意数量的客户(浏览器)都可以致电doStuff()而不会相互影响。

对于管理用户状态的有状态bean,您可以使用session scoped beans

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

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

每个HTTP会话实例化一次UserPreferences bean。因此,每个客户端(浏览器)都有自己的对象。

在这两种情况下,一个客户端(浏览器)不必等到其他客户端的处理完成。