zoukankan      html  css  js  c++  java
  • Spring框架里解析配置文件的准确位置

    We can define bean configuration in xml and then can get instantiated bean instance with help of all kinds of containers for example ClassPathXmlApplicationContext as displayed below:

    The content of Beans.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <!--  http://stackoverflow.com/questions/18802982/no-declaration-can-be-found-for-element-contextannotation-config
     -->
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd">   
       <bean id="helloWorld" class="main.java.com.sap.HelloWorld">
           <property name="message" value="sss"/>
           <property name="testMin" value="2"/>
           <property name="phone" value="1"/>
       </bean>
    </beans>
    

    Where can we set breakpoint to start? No hint. Here is a tip: we can make the Beans.xml invalid by deliberately changing te tag bean to beana, and relaunch application. Now exception is raised as expected: Click the hyperlink XmlBeanDefinitionReader.java:399,

    The line 399 where exception is raised will be automatically located. The core logic to load xml file is just near the exception raise position: line 391. So we can set breakpoint in line 391 now:

    Change the tag from beana back to bean, and start application via debug mode. The code below is the core logic of Bean configuration file parse in Spring framework. The logic consists of two main steps:

    (1) parse XML as a dom structure in memory ( line 391 )
    (2) extract bean information contained in dom structure and generate BeanDefinition structure ( line 392 )

    from screenshot below we can find out the xml is parsed via SAX parser:

    My “helloWorld” bean is parsed here:


    要获取更多Jerry的原创文章,请关注公众号"汪子熙":

  • 相关阅读:
    102. 教程:重装谷歌浏览器的教程
    IGBT知识普及
    [刷机资源] 荣耀8 E5 B391 V2 ROM集合 Xposed DPI调整等 N多自定义功能 Kangvip@HRT( 2017-9-28)
    ITPUB附件下载免输验证码 (实际下载地址的规则)
    花生壳内网穿透不再支持国外IP!
    golang 如何开发windows窗口界面
    golang 热重启
    强化go get命令
    go mod get go-git timeout
    golang单一职责原则接口设计例子
  • 原文地址:https://www.cnblogs.com/sap-jerry/p/13549156.html
Copyright © 2011-2022 走看看