Application 继承的接口
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();
获得类加载器