暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【死磕spring源码】spring配置文件的加载流程(一)

胡金水 2019-03-20
207

今天先来死磕spring
配置文件的加载流程:

  1. AbstractApplicationContext #refresh-》

  2. AbstractApplicationContext #obtainFreshBeanFactory-》

  3. AbstractRefreshableApplicationContext #refreshBeanFactory-》

  4. XmlWebApplicationContext #loadBeanDefinitions-》

  5. AbstractBeanDefinitionReader #loadBeanDefinitions-》

  6. XmlBeanDefinitionReader #loadBeanDefinitions-》#doLoadBeanDefinitions-》#registerBeanDefinitions-》

  7. DefaultBeanDefinitionDocumentReader #registerBeanDefinitions-》 #doRegisterBeanDefinitions-》#parseBeanDefinitions-》parseDefaultElement


以上七步就是从spring
的入口到解析xml
配置文件,如果看到parseDefaultElement
这个方法,那么恭喜你,已经看到希望了,可以看下具体源码:

  1. public static final String IMPORT_ELEMENT = "import";

  2. public static final String ALIAS_ELEMENT = "alias";

  3. public static final String BEAN_ELEMENT = "bean";

  4. public static final String NESTED_BEANS_ELEMENT = "beans";


  5. private void parseDefaultElement(Element ele, BeanDefinitionParserDelegate delegate) {

  6. if (delegate.nodeNameEquals(ele, IMPORT_ELEMENT)) {//解析import标签

  7. importBeanDefinitionResource(ele);

  8. }

  9. else if (delegate.nodeNameEquals(ele, ALIAS_ELEMENT)) {//解析alias

  10. processAliasRegistration(ele);

  11. }

  12. else if (delegate.nodeNameEquals(ele, BEAN_ELEMENT)) {//解析bean

  13. processBeanDefinition(ele, delegate);

  14. }

  15. else if (delegate.nodeNameEquals(ele, NESTED_BEANS_ELEMENT)) {//解析beans

  16. // recurse

  17. doRegisterBeanDefinitions(ele);

  18. }

  19. }

文章转载自胡金水,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论