0
点赞
收藏
分享

微信扫一扫

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

注:

上文所谓的 ​​xxxApplicationContext​​​,指的是诸如: ​​WebApplicationContext​​​、​​AnnotationConfigWebApplicationContext​​​、​​ClassPathXmlApplicationContext​​之类的很多 xxxContext。


举报

相关推荐

0 条评论