spring源码-容器的基本实现

                                                                           spring源码-容器的基本实现

1、容器基本用法

1)实例:

 bean的定义:

         实体类{属性,set,get}

配置文件:

         <bean id="实体类名(首字母小写)"  class="实体类路径"/>

测试:

       实体类  =   new XMLBeanFactory(new ClassPathResource("配置文件全名")).getBean("实体类名(首字母小写)");

2)功能分析:

     ①读取配置文件.xml

     ②根据配置文件找到对应类的配置,获取类路径,通过反射机制进行实例化

     ③调用实例化后的实例

3)Bean加载步骤

      XmlBeanDefinitionReader通过继承AbstractBeanDefinitionReader中的方法,使用resourceLoader将资源文件转换为对应的resource;

     再通过DoucementLoader对resource文件进行转换,为Document文件;

     通过实现接口BeanDefinitionDoucementReader的DefalutBeanDefinitionDoucementReader类对Document进行解析,并使用BeanDefinitionParserDelegate对Document进行解析

2、获取XML的验证模式

DTD:文档定义类型,xml约束语言。

XSD:XML Schema 语言,  描述了XML文档的结构。

1)获取验证模式

getValidationModeForResource(resource)  {

  //自定义校验

//默认校验

detectValidationMode(inputStream):

  读取的行是空或者是注释跳过,当包含DOCTYPE就是DTD,否则为XSD。

}

2)验证文件

     验证文件默认加载方式时通过url进行网络下载,这样会造成延迟,一般做法是将验证文件防止到项目中。

     对不同的验证模式,spring有不同的解析器解析:

        DTD:直接截取systemId最后的xxx.dtd,然后去当前目录下寻找

        XSD:默认到META-INF/Spring.schems文件中找到systemId所对应的XSD文件并加载

3、获取Document

    经过验证模式,就可以进行Document加载。委托给DocumentLoader接口,由DefaultDocumentLoader实现类获取

4、解析和注册BeanDefinitions

①Document - > element :

    document.getDocument ()

②处理profile :

  <beans profile="dev"> <beans profile="test"> 可同时配置两套beans用于生成和测试环境,在web.xml中指定Spring.profiles.active值为dev或test

③解析并注册BeanDefinition:

   判断bean的类型(node.getNamespaceURL()):

默认类型:<bean id="" class=""> 通过parseDefalutElement方法解析

自定义类型(<tx:annotation-driven/>):通过delegate.paseCustomElement方法解析

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值