Spring源码初探-IOC(1)-Bean的初始化

2016-07-08  本文已影响628人  LNAmp

前言

对于一名Java码农来说,Spring真是太重要了。目前Spring的体系已经发展得非常壮大,其底层基石core,beans,context非常牢固。

spring 体系结构图

Bean初始化

个人认为,Spring最原始或者最基础的功能是“容器”,帮你管理着一堆bean的生命周期,任你取用,要想更好的使用Spring,还是得了解Bean的整个生命周期,首先了解Bean的初始化过程。本文采用XML配置文件的方式管理bean,分析XmlBeanFactory对于XML文件的解析过程。废话不多说,先上图:

Spring XmlBeanFacotry解析XML过程(1).jpg

上图给出了XmlBeanFactory将xml配置解析成BeanDefinition的过程,最上面给出的类是在解析过程中涉及到的,首先大致进行一个介绍:

private void parseDefaultElement(Element ele, BeanDefinitionParserDelegate delegate) {  
  if (delegate.nodeNameEquals(ele, IMPORT_ELEMENT)) {      importBeanDefinitionResource(ele);   }  
  else if (delegate.nodeNameEquals(ele, ALIAS_ELEMENT)) {               processAliasRegistration(ele);   }  
   else if (delegate.nodeNameEquals(ele, BEAN_ELEMENT)) {      processBeanDefinition(ele, delegate);   }
   else if (delegate.nodeNameEquals(ele, NESTED_BEANS_ELEMENT)) {      // recurse      doRegisterBeanDefinitions(ele);   }}

上述代码描述了BeanDefinitionParserDelegate对于不同element的解析,脏活累活中非常的一个部分

小结

本文算是小小地总结了一下将XML解析成BeanDefinition的过程中涉及到的一些类,将XML解析出来其实是一个很简单的过程,但是Spring却用了非常多的类。究其原因还是为了考虑扩展性,不断地抽象,不断地将责任委派。这篇文章只介绍了DefaultElement的解析,下篇文章将介绍怎么自定义标签以及Spring怎么解析自定义标签。

上一篇 下一篇

猜你喜欢

热点阅读