Spring源码解析

第一讲 容器接口

BeanFactory和ApplicationContext接口的具体继承关系:

ApplicationContext 间接继承了BeanFactory

  • BeanFactory是父接口
  • ApplicationContext是子接口,里面一些功能调用了BeanFactory
BeanFactory的功能
  • 表面上只有 getBean(接口的方法)
  • 实际上控制反转、基本的依赖注入、直至bean的生命周期的各种功能,都由它的实现类来提供

他的实现类-DefaultListableBeanFactory

  • 父类:DefaultSingleletonBeanRegistry

BeanFactory的主要方法(看接口的主要方法ctrl+F12):

  • containsBean 根据bean的名字看容器中是否包含该对象
  • getAliases 根据bean的名字获取他的别名
  • getBean 根据name/type 获取该bean

管理所有单例对象

所有单例bean:singletonObjects

获取到所有单例bean

DefaultSingleletonBeanRegistry.class.get
ApplicationContext的扩展功能

ApplicationContext的扩展功能 ,主要来自 继承的四个接口

  • MessageSource 处理国际化资源能力
  • ResourcePayyernResolver 对通配符去匹配资源的能力
  • EnvironmentCapable 读取环境信息,比如读取 application.properties
  • ApplicationEventPublisher 发布事件对象
MessageSource 处理国际化资源能力
context.getMessage("hi",null, Locale.ENGLISH);
ResourcePayyernResolver 对通配符去匹配资源的能力
 //第二个接口 通配符classpath  jar包中classpath*:
context.getResource("classpath:hello.txt");
  • file: 磁盘路径
  • classpath: 相对路径
  • classpath*:也可以在jar包寻找
EnvironmentCapable 读取环境信息,比如读取 application.properties
//第三个信息 获取配置信息
//1、获取系统环境变量中的值
context.getEnvironment().getProperty("java_home");
//2、获取application.porperties
context.getEnvironment().getProperty("server.port");

ApplicationEventPublisher 发布事件对象
  //4、发送事件
context.publishEvent(new User());

接收事件

    @EventListener
    public void res(User user){
        log.(user)
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值