术语: spring 是一个生态,包含spring xxx各种我们日常说的东西。通常我们老是说“spring 如何如何” 可以理解为一种简称,我们日常为了简便经常把spring framework 简称为spring 。 但本文就不会再这么说了,以下本文称spring framework ,以免歧义。
直接上结论:
spring framework 是一个bean容器 。
如果要用最短的一句话来描述spring framework 的本质,那么上面这句就是。 下面只是一些进一步的阐述。
- 它是
spring mvc 、spring boot 等多种所谓“spring应用”的基础。 - 具体来说,spring项目(各种依赖于
spring framework 的应用)启动时,会根据 xxxApplicationContext的类型,分别去从xml配置文件 、注解 、或者WEB_INF路径下的配置文件 等处去读取配置,最终根据配置,产生很多的bean 并维护起来,这也就是说它是bean容器 的原因 spring framework 所谓的维护bean ,可以大致理解为最终维护在一个 Map<String, BeanDefinetion > 里面的。 可以大致理解为 key就是 beanName ,value 是 BeanDefinition 。 其中BeanDefinition 可以立即为是 Bean对象 的一层封装,也就是提供了更多方法而已。就像我们开发中,如果有一个类的功能太少,不足以提供足够的功能,我们会再给它封装一层class。就是这个简单易懂的意思。- 然后,
spring framework 在产生xxxContext的过程中,还会通过beanFactoryPostProcessor 等方法可以把上面提到的这个Map暴露出来,我们就可以控制这些bean的几乎任意行为。 - 另外,所谓
扩展spring framework ,如果beanFactoryPostProcessor 的自由程度依然不满足的话,可以自己写一个 xxxContext ,继承spring framework 里面的xxxContext,重写各个方法,那就可以在产生bean的各个节点进一步控制,理论上基本上更加为所欲为,可任意操作了。
以下上传一个我在小组里做技术分享时的一个自制PPT。
spring framework.pptx
|