天天看点

spring framework 究竟是个什么玩意

术语:

​​

​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​​

继续阅读