spring单例模式

来源:互联网 发布:天策雪河军爷捏脸数据 编辑:程序博客网 时间:2024/05/26 15:58

关于spring是单例还是多例

1.spring作为控制层默认采用的是单例模式,即在一个conctroller实例化一次之后,就不在实例化了.
2.当然,spring也是支持多例的,使用 @scope(“prototype”) 注解来实现多例.使用多例会是程序更加安全.
a.那么问题来了,既然使用多例让程序更加安全为何spring不采用多例呢?
比如:当两个用户同时登录时,理想的状态,他两正好是同时登录,当用户A登录的账号和密码是正确的,而用户B的账号和密码是错的,而密码是一样的,
当用户A先登录成功了,用户B由于各种原因会使用到A的密码数据,如此用户B用错误的密码也登录成功了,如此是不是很不安全.(当然这种情况极难以出现的情况,只是为了说明这种单利模式不安全).

b.然而我们的问题还没有解决呢.既然如此,spring为何还要采用单利模式呢.当然,当使用多例的时候spring容器会在每次访问的时候创建对象.这样会使用大量的new 创建对象.然而这样的开销是很大的,从而影响到程序的性能.

3.既然spring采用的这种模式,他也给了开发者自由的选择,可根据自己的需求配置自己需要的模式.
既然不安全是由创建对象而造成的,那么我们不创建对象不就可以避免了,因此,我们在使用spring的时候,在controller中不要声明属性,这样就不会因为使用单例的变量而造成数据脏读,这样就避免了这个问题.所以在contrller中一般只会声明接口供给controller调用,我想这只是展现spring框架模式冰山一角的好处.

以此笔记,慢慢学习.
原创粉丝点击