第一講 容器接口
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)}