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

68 阅读2分钟

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

上一篇文章介绍了singleton 的基本作用,这篇文章继续上一篇的思路,介绍其他内容。

singleton 作用域的注意事项

我们在看到singleton 这个词的时候,可能会联想到设计模式中的一个设计模式:单例职责。它对于的英文也是singleton。

虽然二者的名称是相同的,但是语义却是不一样的。

作用域被标记为singleton 的bean 的含义是这个bean 会由容器来保证它在同一个容器中只能存在一个实例,同时这个实例在各个引用对象之间是共享的;而singleton(单例模式)则是要求保证在同一个类加载器(ClassLoader)中只存在一个这种类型的实例。

singleton 的特性

我们可以总结来看,从两方面去学习singleton 作用域的特性。

对象实例的数量

对于使用singleton 作用域类型的bean,它在一个容器中只会存在一个实例,左右依赖它的业务对象只能共享这一个实例。

这就仿佛在一个公司容器中是,CEO 只能有一个,CEO 就是singleton 的。如果有相关的事情需要找CEO 来做决策或者商讨,只能找这一个人。

对象的存活时间

使用singleton 作用域类型的bean,容器启动之后,在它第一次被请求的时候会实例化。容器中途不销毁、不退出,它就会一直存在。也就是说,它随着容器的存在而存在,随着容器的销毁而销毁。

如果我们在对bean 进行声明的时候,不单独指定bean 的作用域,那么默认的类型就是singleton。

总结

这篇文章延续了上一篇文章讲述的内容,主要介绍singleton 作用域的注意事项和两个特性。这些在之后的工作和学习中会常常用到,希望读者多加留意。