GenericApplicationContext

这段时间在debug研究Spring框架的源码,发现AbstractApplicationContext有两个分支,分别为AbstractRefreshableApplicationContext和GenericApplicationContext,前者是我最近研究源码的主线,后者没有关注过,特此记录,使用IDEA看看两个分支的继承结构

AbstractApplicationContext

AbstractRefreshableApplicationContext

GenericApplicationContext 

从源码发现几个特性。

  1. 内部就持有一个DefaultListableBeanFactory实例,并且没有指定bean定义信息来源方式
  2. 该类实现了BeanDefinitionRegistry,目的就是可以用来定义不同的BeanDefinitionReader实例
  3. AbstractRefreshableApplicationContext及子类的每次refresh都是先清除已有(如果不存在就创建)的容器,然后再重新创建,GenericApplicationContext是初始化的时候就创建容器,往后的每次refresh都不会更改
  4. AbstractRefreshableApplicationContext及子类无法做到GenericApplicationContext混合搭配从不同源头获取bean的定义信息
GenericApplicationContext ctx = new GenericApplicationContext();

XmlBeanDefinitionReader xmlReader = new XmlBeanDefinitionReader(ctx);
xmlReader.loadBeanDefinitions(new ClassPathResource("applicationContext.xml"));

PropertiesBeanDefinitionReader propReader = new PropertiesBeanDefinitionReader(ctx);
propReader.loadBeanDefinitions(new ClassPathResource("otherBeans.properties"));

ctx.refresh();

如下是关于不同bean定义信息来源方式对应不同的reader

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值