小弟接触spring时间不长,之前从事C开发,对效率问题比较重视。
spring里面的bean管理是单例实现,在服务器同时接受多个请求是,是如何处理的?
如果多个请求中有相同的bean使用,这个看似与bean单例管理相矛盾,spring存在怎样的机制来处理这种情况的?
希望有人能解决这个疑惑,
可以研究一下 spring 的 scope,用来规范 bean 的作用域
singleton的话注意其中没有带状态的成员变量也应该是OK的
Spring能同时处理多条Web请求并不是Spring的能力,而是Tomcat、Jetty等Web容器做的事情。可以把Tomcat的模型简化为如下的代码:
1,启动ServerSocket监听连接。
2,当监听到连接后,把这个连接交给Tomcat自身线程池的一个线程。这个线程会完成对当前请求的处理。在处理过程中就会调用到SpringBean的各种方法。
如果将Tomcat的线程池线程数量改为1,那么Spring中就只会有一个请求了。
不矛盾啊,既然是单列,每次访问都是不同的线程,只要注意线程安全问题就可以了啊。所以在你的bean里面不能有成员变量,这样就不会有并发问题啊。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。