Spring源码学习--BeanFactory对象实例化工厂(一)

BeanFactory及其子类是Spring IOC容器中最重要的一个类,BeanFactory由类名可以看出其是一个Bean工厂类,其实它确实是一个Bean工厂类,完成Bean的初始化操作。Bean的初始化操作还是一个比较麻烦的操作,首先根据spring注入配置将bean初始化为单例或者原型,其次需要根据Bean的属性配置来完成Bean参数的注入配置,还有要解决单例模式下Bean的循环依赖的问题,原型模式下bean的循环依赖会直接报错。

BeanFactory接口及其实现类:


BeanFactory接口继承关系:



BeanFactory 是Spring bean容器的根接口.提供获取bean,是否包含bean,是否单例与原型,获取bean类型,bean 别名的api.

-- AutowireCapableBeanFactory 添加集成其他框架功能.如果集成WebWork则可以使用Spring对Actions等进行管理.

-- HierarchicalBeanFactory 提供父容器的访问功能

--ConfigurableBeanFactory 如名,提供factory的配置功能,眼花缭乱好多api

-- ConfigurableListableBeanFactory 集大成者,提供解析,修改bean定义,并与初始化单例.

-- ListableBeanFactory 提供容器内bean实例的枚举功能.这边不会考虑父容器内的实例.

BeanFactory提供的接口如下:

public interface BeanFactory {
	
	String FACTORY_BEAN_PREFIX = "&";

	//根据名称获取bean
	Object getBean(String name) throws BeansException;

	//根据名称及类型获取类
	<T> T getBean(String name, Class<T> requiredType) throws BeansException;

	//根据类型获取类
	<T> T getBean(Class<T> requiredType) throws BeansException;

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

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

	boolean containsBean(String name);

	//单例判断
	boolean isSingleton(String name) throws NoSuchBeanDefinitionException;
	//原型判断
	boolean isPrototype(String name) throws NoSuchBeanDefinitionException;
	//类型判断
	boolean isTypeMatch(String name, ResolvableType typeToMatch) throws NoSuchBeanDefinitionException;

	boolean isTypeMatch(String name, Class<?> typeToMatch) throws NoSuchBeanDefinitionException;

	Class<?> getType(String name) throws NoSuchBeanDefinitionException;

	String[] getAliases(String name);

}

总结:接下来我们通过几篇博客来介绍BeanFactory所提供的Bean实例化操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值