第一讲 容器接口
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());
接收事件
@EventListenerpublic void res(User user){log.(user)}