Spring--IOC容器之BeanFactory和ApplicationContext

BeanFactory

是一个接口,提供最基本的容器功能,其他具体容器都要实现或者继承该接口,以实现具体的逻辑

  •  方法

1、Object getBean(String name) throws BeansException

传入name从容器中获取具体的bean,如果获取不到,则抛BeanException异常

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

传入name和具体的type获取具体的bean,如果获取不到,则抛BeanException异常

返回类型为T,根据传入的type确定

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

传入name加相应的参数名获取具体的bean,如果获取不到,则抛BeanException异常

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

传入type获取相应的bean(即平常所说的by-type)获取bean,获取不到则抛BeanException异常

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

传入具体的类型以及构造方法参数或工厂方法参数获取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功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值