Spring源码分析-IOC之ConfigurableBeanFactory

ConfigurableBeanFactory继承自HierarchicalBeanFactory,SingletonBeanRegistry,这两个接口我们在前面已经介绍过,大家可以看下具体的介绍,Spring源码分析-IOC之HierarchicalBeanFactory,Spring源码分析-IOC之SingletonBeanRegistry,

ConfigurableBeanFactory提供了配置Factory的各种方法,我们来看下具体的代码:

public interface ConfigurableBeanFactory extends HierarchicalBeanFactory, SingletonBeanRegistry {

	//单例
	String SCOPE_SINGLETON = "singleton";

	//原型
	String SCOPE_PROTOTYPE = "prototype";


	//设置父类的BeanFactory,可以在HierarchicalBeanFactory中看到父类的BeanFactory的设置
	void setParentBeanFactory(BeanFactory parentBeanFactory) throws IllegalStateException;

	//设置类加载器
	void setBeanClassLoader(ClassLoader beanClassLoader);

	//获取类加载器
	ClassLoader getBeanClassLoader();

	//设置临时加载器
	void setTempClassLoader(ClassLoader tempClassLoader);

	//获取临时加载器
	ClassLoader getTempClassLoader();

	//设置是否缓存源,false,从新从类加载器加载
	void setCacheBeanMetadata(boolean cacheBeanMetadata);

	//是否缓存了definitions
	boolean isCacheBeanMetadata();

	 //bean的表达式解析
	void setBeanExpressionResolver(BeanExpressionResolver resolver);

	  //获取bean的表达式解析
	BeanExpressionResolver getBeanExpressionResolver();

	 //设置一个转换服务
	void setConversionService(ConversionService conversionService);

	//获取一个转换服务
	ConversionService getConversionService();

	//设置属性注册员
	void addPropertyEditorRegistrar(PropertyEditorRegistrar registrar);

	//注册属性编辑器
	void registerCustomEditor(Class<?> requiredType, Class<? extends PropertyEditor> propertyEditorClass);

	//复杂属性编辑器
	void copyRegisteredEditorsTo(PropertyEditorRegistry registry);

		 //设置类型转换器
	void setTypeConverter(TypeConverter typeConverter);


	 //获取类型转换器
	TypeConverter getTypeConverter();

// 增加一个嵌入式的StringValueResolve
	void addEmbeddedValueResolver(StringValueResolver valueResolver);

	  //确定定是否有一个嵌入式的value resolver已经在这个bean factory中注册了,并且可以通过resolveEmbeddedValue函数来应用.
	String resolveEmbeddedValue(String value);

	//增加一个BeanPostProcessor的处理器 前后
	void addBeanPostProcessor(BeanPostProcessor beanPostProcessor);

	//获取BeanPostProcessor的数量
	int getBeanPostProcessorCount();

	 //注册bean的范围
	void registerScope(String scopeName, Scope scope);

	//获取bean的范围
	String[] getRegisteredScopeNames();

	  //获取注册的范围
	Scope getRegisteredScope(String scopeName);

	  //返回本工厂的一个安全访问上下文
	AccessControlContext getAccessControlContext();

	 //复制其他工程的属性配置
	void copyConfigurationFrom(ConfigurableBeanFactory otherFactory);

	//给指定的bean注册别名
	void registerAlias(String beanName, String alias) throws BeanDefinitionStoreException;

	//根据StringValueResolver来移除bean
	void resolveAliases(StringValueResolver valueResolver);

	//返回合并后的Beandefinition
	BeanDefinition getMergedBeanDefinition(String beanName) throws NoSuchBeanDefinitionException;

	//判断bean是否是FactoryBean
	boolean isFactoryBean(String name) throws NoSuchBeanDefinitionException;

	 //设置一个是否正在创建的bean
	void setCurrentlyInCreation(String beanName, boolean inCreation);

	//判断bean是否正在创建
	boolean isCurrentlyInCreation(String beanName);

	//为bean注册一个依赖bean
	void registerDependentBean(String beanName, String dependentBeanName);

	//获取bean的所有依赖bean
	String[] getDependentBeans(String beanName);

	//返回给定名字Bean所依赖的所有Bean名称.
	String[] getDependenciesForBean(String beanName);

     //销毁指定的bean
	void destroyBean(String beanName, Object beanInstance);

	//销毁指定的
	void destroyScopedBean(String beanName);

	//销毁单例对象
	void destroySingletons();

}

我们可以看到这里面的好多方法的实现我们在前面的Spring源码分析-IOC之DefaultSingletonBeanRegistry已经分析过大家可以参考下,具体的实现.

猜你喜欢

转载自blog.csdn.net/cgsyck/article/details/88822880