Spring 入门学习 —— XML 格式文件介绍(二十)(方法注入与方法替换 [1])

72 阅读2分钟

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

上一篇文章我们完成了FactoryBean 这一开发利器的介绍,这篇文章我们开始介绍一下Spring 容器中一些独特的特性:方法注入与方法替换。

方法注入与方法替换引入的前期铺垫

这两个概念的英文分别为:Method Injection / Method Replacement。

在介绍方法注入与方法替换之前,我们再提一下关于bean 的scope 使用的一些“陷阱”。特别是prototype 类型在使用过程中的一些“坑”。

我们都知道,如果一个bean 的作用域被定义成了prototype,那么请求方在每次向容器请求这个类型的对象的时候,容器都会向请求方返回一个这个bean 对象的全新的实例。

这里我们假设一个场景,我们某个系统要实现获取新闻并将这些信息持久化储存的功能。获取新闻的类我们将其定义为NewsFetchBean,然后将其注册到容器当中,同时把它的scope 设置为prototype。

因为为这个bean 设置的作用域为prototype,所以它是一种“有状态类型。

这里我们说明一下什么是“有状态类型”,什么是“无状态类型”。
对于有状态类型,说明这个bean 在使用的过程中是用来“保存某个状态”的,在使用完成之后,这个bean 就不需要了。
所以正好对应于prototype 这种作用域类型。
相比于singleton,它就是“无状态类型”。
它作为无状态类型的原因是在一个容器中,所有调用者都是使用这一个实例的。
如果A 调用者设置了一些值进去,还没等到使用,这个时候B 调用者也去调用了,修改了这些值,那么对A 来说就会出错。

总结

这篇文章主要目的是为了在方法注入与方法替换的引入之前做一些知识铺垫,又介绍了什么是“有状态类型”,什么是“无状态类型”,后续将继续介绍其他相关的知识。