lite-spring 学习总结(一)

  1. 第一部分是关于读取配置文件,生成相应的对象
  2. 主要的接口其职责如下
    1. BeanFactory: 主要的方法是 getBean,可以根据bean的id去创建实例对象
    2. BeanDefiinition:这个接口主要用来保存reader类从配置文件中读取数后存放数据的地方,可以看成一个VO
    3. BeanDefiinitionRegistry:用来管理BeanDefinition们,可以想象它的实现类中应该维护了一个map,键为String,值为BeanDefinition
    4. Resource:职责是读取配置文件,然后返回一个Resource对象,目的是将不同的配置文件进行初步的封装,然后Reader类再来读取Resource类
    5. ApplicationContext:ApplicationContex是对以上这些接口的一个封装,省去了用户自己写Resource,Reader,BeanFactory的过程
  3. 主要的类及其职责如下
    1. DefaultBeanFactory:这个类同时实现了BeanFactory, BeanDefinitionRegistry,便有了管理beanDefinition的能力,和根据beanId去创建Bean实例的能力
    2. ClassPathXmlResource,FileSystemXmlResource:分别可以从不同的路径下读取配置文件,返回其inputStream
    3. GenericBeanDefinition,实现了BeanDefinition,从而具备了管理BeanDefinition的能力
  4. 关于ClassLoader的问题:当使用一个BeanId去创建出一个对象的时候,肯定是需要一个ClassLoader的,这个ClassLoader从哪里来?应不应该提供一个setClassLoader方法让用户自己设置?答案是:
    1. 写一个接口ConfigurableBeanFactory,继承BeanFactory接口,并且将setBeanClassLoader和getBeanClassLoader方法放在ConfigurableBeanFactory,DefaultBeanFactory实现ConfigurableBeanFactory接口,实现两个方法
    2. 但是用户使用BeanFactory的时候并不知道可以setBeanClassLoader,这个方法在哪里用到的呢?答案是AbstractApplicationContext,也就是ApplicationContext中,它提供了一个构造方法中就有参数是ClassLoader,在这个构造方法中设置了ClassLoader
  5. 关于ApplicationContext的问题:这个接口说是封装了第二点中提到的一些接口,但是它实际的运行机制是什么呢?
    1. ApplicationContext接口继承了ConfigurationBeanFactory接口,所以可以设置和获取BeanClassLoader
    2. ApplicationContext的实现类中持有了一个BeanFactory,这是很关键的,因为这样依赖ApplicationContext可以用Resource,Reader读取了配置文件之后将信息保存到它持有的那个BeanFactory中
  6. 问题1:GenericBeanDefinition和DefaultBeanFactory的关系是什么
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值