ApplicationContext 继承的接口

理解Spring BeanFactory与ListableBeanFactory:核心接口与应用场景
本文详细介绍了Spring框架中的BeanFactory接口及其扩展,包括如何通过BeanFactory获取bean、判断bean作用域等关键操作。同时,讲解了ListableBeanFactory接口,它允许批量获取bean实例,简化了对多个bean的操作。此外,还涉及HierarchicalBeanFactory、Environment、MessageSource等接口的重要功能,以及ApplicationEventPublisher和ResourcePatternResolver在事件发布和资源加载中的角色。这些接口是构建和管理Spring应用的基础。

BeanFactory

1 Object getBean(String name) throws BeansException;

为实现这个接口需要

1.1 线程安全的数据结构保存bean的定义信息

1.2 可以通过bean的ID和类型找到这个bean定义

1.3 线程安全的数据结构保存已创建过的对象(单例bean实例复用)

1.4 父子容器,子容器无时从父容器中找

1.5  需要判断bean的作用域

 

2  <T> T getBean(String name, Class<T> requiredType) throws BeansException;

泛型,根据传入的class类型   将1 接口中的Object 对象转换为目标类型对象并返回

 

3  Object getBean(String name, Object... args) throws BeansException;

获得 指定构造方法参数 的对象

4  <T> T getBean(Class<T> requiredType) throws BeansException;

获得指定class 类型的对象 class名首字母变小些作为name找对应对象?

5  <T> T getBean(Class<T> requiredType, Object... args) throws BeansException;

6 <T> ObjectProvider<T> getBeanProvider(Class<T> requiredType);

7 <T> ObjectProvider<T> getBeanProvider(ResolvableType requiredType);

8 boolean containsBean(String name);

判断指定name的bean是否在此容器或其父容器中

9 boolean isSingleton(String name) throws NoSuchBeanDefinitionException;

判断指定name的bean是否是单例的

10 boolean isPrototype(String name) throws NoSuchBeanDefinitionException;

11 String[] getAliases(String name);

返回指定name的bean的所有别名

 

ListableBeanFactory

批量获取bean实例,批量获取bean名字的接口   不用像BeanFactory一样只能一个一个获取。 使用时不需要考虑已注册的bean和父容器中的bean

 

HierarchicalBeanFactory

1 BeanFactory getParentBeanFactory();  // 返回父容器实例
2 boolean containsLocalBean(String name); // 忽略父容器  查询某个名字的bean是否存在

Environment

当前应用运行的环境

 

MessageSource

提供了三个获取消息的接口

差异在于  1 消息不存在时返回默认消息还是抛出异常 以及 2 入参的不同

 

ApplicationEventPublisher

向所有注册监听此事件变化的观察者发送事件变化

void publishEvent(Object event);

 

ResourcePatternResolver

资源解析器

1 Resource[] getResources(String locationPattern) throws IOException;

批量加载资源

2 Resource getResource(String location);

加载单个资源

3 ClassLoader getClassLoader();

获得类加载器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值