BeanFactory
是一个接口,提供最基本的容器功能,其他具体容器都要实现或者继承该接口,以实现具体的逻辑
1、Object getBean(String name) throws BeansException
传入name从容器中获取具体的bean,如果获取不到,则抛BeanException异常
2、
传入name和具体的type获取具体的bean,如果获取不到,则抛BeanException异常
返回类型为T,根据传入的type确定
3、Object getBean(String name, Object... args) throws BeansException;
传入name加相应的参数名获取具体的bean,如果获取不到,则抛BeanException异常
4、
传入type获取相应的bean(即平常所说的by-type)获取bean,获取不到则抛BeanException异常
5、
传入具体的类型以及构造方法参数或工厂方法参数获取bean,获取不到抛异常
6、boolean containsBean(String name);
根据具体name查询容器中是否有相应的bean,如果传入的name是alias,将会转换成标准的name
7、boolean isSingleton(String name) throws NoSuchBeanDefinitionException;
根据name判断该bean是否为单例,如果没有相应的bean报NoSuchBeanDefinitionException异常
singleton类型的bean可以理解为无状态的bean,同一个容器中只会存在一个共享的bean实例
8、boolean isPrototype(String name) throws NoSuchBeanDefinitionException;
根据name判断bean是否为Prototype类型的,如果是Prototype类型的,则每次请求都会创建一个新的该bean
prototype类型的bean可以理解为有状态的bean,即每个该bean所具有的的意义并不完全一样
9、boolean isTypeMatch(String name, ResolvableType typeToMatch) throws NoSuchBeanDefinitionException;
检查name所代表的bean是否符合所指定的类型typeToMatch,如果找不到bean则抛NoSuchBeanDefinitionException异常
10、boolean isTypeMatch(String name, Class> typeToMatch) throws NoSuchBeanDefinitionException;
意义同上,此处传入的指定类型为Class类型的。
11、Class> getType(String name) throws NoSuchBeanDefinitionException;
根据name获取其所代表的bean的类型。
12、String[] getAliases(String name);
获取name所代表的bean的别名,返回的参数为String的数组类型。
ApplicationContext
是一个借口,是容器的高级形态,之所以称为高级形态,是因为其继承了BeanFactory接口以及其他容器接口所具有的功能,在此基础上,增加了许多面向框架的特性,例如继承了ApplicationEventPublisher接口,使得ApplicationContext具备了封装事件发布的功能
1、org.springframework.core.env.EnvironmentCapable
使得ApplicationContext拥有了获取环境信息的功能,通过EnvironmentCapable的getEnvironment()方法可以获取环境信息
2、org.springframework.beans.factory.ListableBeanFactory
继承这个接口拥有了可以获得所有的bean实例,而不用一个一个的去获取的能力。该接口会预先加载所有的bean definitions
3、org.springframework.beans.factory.HierarchicalBeanFactory
继承了这个接口拥有了获取父bean的factory以及本地bean的能力
4、org.springframework.context.MessageSource
是一个解析消息的策略接口,拥有解析消息的能力,支持参数化和国际化的消息,有两个获取message的getMessage方法。
5、org.springframework.context.ApplicationEventPublisher
支持事件发布的功能,有两个发布事件的方法,支持Object、ApplicationEvent类型的事件
6、org.springframework.core.io.support.ResourcePatternResolver
继承了这个接口拥有了解析资源的功能,此接口是继承于ResourceLoader,用来将一个资源文件转化为Resource Object即一个资源对象,这样代码就可以直接拿来用了
1、String getId();
返回当前Application context的唯一id
2、String getApplicationName();
获取当前应用的应用名即当前appllication context的名称
3、String getDisplayName();
获取展示名称
4、long getStartupDate();
获取application context的第一次加载的时间
5、ApplicationContext getParent();
获取当前context的父context,如果没有找到则返回null
6、AutowireCapableBeanFactory getAutowireCapableBeanFactory() throws IllegalStateException;
暴露AutowireCapableBeanFactory功能。