Spring 入门学习 —— XML 格式文件介绍(八)(bean 的scope [2])

104 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第12天,点击查看活动详情 // 周末处理

上一篇文章 我们引入了bean 的scope 的相关定义,这篇文章我们继续介绍scope 的另外一些内容。

Spring 容器中scope 的类型

最开始Spring 的容器只有两种类型:singleton 和prototype。但是Spring 在2.0 版本之后,又引入了其他三种类型:request / session 和global session。

但是后引入的三种类型是有限制的,它们只能在web 中使用。也就是说,这三种类型只有在支持web 应用的容器中使用才是比较合理的。

在xml 文件中,可以在<bean> 的scope 属性中明确指出该对象相应的作用域。接下来我们介绍一些这几种类型分别是什么含义,看看容器提供的这几种类型如何限定相应的业务对象。

singleton

其实我们在使用xml 文件来注册和绑定业务对象的依赖关系的时候,都是按照xml 的模板来进行选配的。

所以配置中的bean 的定义可以看作是一个实现了的模板,容器在启动之后,会根据用户定义的这个模板来构造用户想要的对象。

scope 元素存在的意义就是告诉容器,要通过这个bean 的模板构造出多少个对象实例;同时这些实例对象构造完成之后应该存活多久。

singleton 本身的单词含义是“独身、一个”。它的语义是告诉容器,这个bean 对应的业务对象在容器中只能存在一个实例,所有对这个对象的引用只能共享这个实例

这个实例从容器启动之后,在第一次被请求的时候初始化,然后一直存活到容器退出。它几乎与IOC 容器寿命相同。

总结

这篇文章说明了容器中业务对象的几种作用范围,同时简单介绍了一下singleton。