携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第16天,点击查看活动详情
上一篇及之前的几篇文章介绍了Spring 容器中的几种类型的scope 作用域,这篇文章我们介绍自定义scope 类型。
自定义scope 类型
除了之前介绍的五种类型的scope 作用域以外,在Spring 2.0 之后,Spring 为我们提供了针对scope 的扩展点,这样我们可以根据自己的需要,结合具体的应用场景,来添加自定义的scope 类型。
值得注意的是,对于singleton 和prototype 两种类型的作用域,它们已经被硬编码到Spring 的代码中的,不存在扩展点;而对于另外三种类型及自定义类型的作用域,它们是属于可扩展的scope 的。
对于这些可扩展的scope 类型,它们都实现了org.springframework.beans.factory.config.Scope 这个接口。但是具体是如何实现的,这里就不做过多展开了,因为我们初学Spring,同时在实际开发中也很少用到这个功能。
几种作用域类型的对比
我们日常接触的比较多的就是Singleton,其次就是prototype。另外三种见到的少之又少甚至没有,当然,自定义scope 的曝光是最少的。
对于Singleton,bean 在定义的过程中,默认的模式就是这种;另外一种比较常用的就是prototype,这种也是在对业务进行技术选型的时候确定是否要使用这种类型。其他的就是request / session / global session 这三种了。对于这几种作用域范围我们要记住以下四点即可:
- reqeust 和http 请求相关
- session 和session 维度信息保存业务有关
- global session 只应用于基于portlet 的web 应用程序
- 这三种类型只有应用于web 应用程序才有意义。
总结
至此,我们关于bean 中的scope 作用域的相关内容就介绍到这里。后续文章我们继续介绍其他的知识。