有一种情况,我们有50个浏览器打开访问应用程序,如果有一个单一作用域(意味着每个容器一个bean),那么如何在所有线程实例之间共享单例bean
或者如果一个对象只与一个浏览器(客户端)共享,那么所有其他客户端都将处于空闲状态,这是一个糟糕的设计
有些机构可以建议回答
答案 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。因此,每个客户端(浏览器)都有自己的对象。
在这两种情况下,一个客户端(浏览器)不必等到其他客户端的处理完成。