BeanDefinition介绍

BeanDefinition是什么?

/**
 * A BeanDefinition describes a bean instance, which has property values,
 * constructor argument values, and further information supplied by
 * concrete implementations.
 *
 * 

This is just a minimal interface: The main intention is to allow a * {@link BeanFactoryPostProcessor} such as {@link PropertyPlaceholderConfigurer} * to introspect and modify property values and other bean metadata. * * @author Juergen Hoeller * @author Rob Harrop * @since 19.03.2004 * @see ConfigurableListableBeanFactory#getBeanDefinition * @see org.springframework.beans.factory.support.RootBeanDefinition * @see org.springframework.beans.factory.support.ChildBeanDefinition */ public interface BeanDefinition extends AttributeAccessor, BeanMetadataElement

BeanDefinition在Spring中是用来描述Bean对象的,其不是一个bean实例,仅仅是包含bean实例的所有信息,比如属性值、构造器参数以及其他信息。Bean对象创建是根据BeanDefinitionc中描述的信息来创建的,BeanDefinitionc存在的作用是为了可以方便的进行修改属性值和其他元信息,比如通过BeanFactoryPostProcessor进行修改一些信息,然后在创建Bean对象的时候就可以结合原始信息和修改后的信息创建对象了。

BeanDefinition包含哪些信息?

BeanDefinition介绍_第1张图片

分类 属性 or 方法 说明 备注
Bean对象含义
@Nullable
String getFactoryMethodName();

Bean对象的class对象

必填
ConstructorArgumentValues getConstructorArgumentValues()
构造器参数  
MutablePropertyValues getPropertyValues();
属性值  
@Nullable
String getFactoryBeanName();
工厂bean名称  
boolean isAbstract();
是否是abstract修饰  
Spring对象的含义
@Nullable
String getDescription();
beanDefinition描述  
 
@Nullable
String[] getDependsOn();
依赖的bean名称 if any
 
@Nullable
String getFactoryMethodName();
获取工厂方法 if any
 
@Nullable
BeanDefinition getOriginatingBeanDefinition();
获取装饰的原始beanDefinition if any
 
@Nullable
String getParentName();
获取父BeanDefinition的名称 if any
 
@Nullable
String getResourceDescription();
获取beanDefinition的资源说明,主要用来错误信息提示  
 
int getRole();
角色
ROLE_APPLICATION
ROLE_SUPPORT
ROLE_INFRASTRUCTURE
 
 
@Nullable
String getScope();

Bean的Score名称,也可以扩展

SCOPE_SINGLETON
SCOPE_PROTOTYPE
 
 
boolean isAutowireCandidate();
是否是其他bean的autowire的候选人  
 
boolean isLazyInit();
是否懒加载  
 
boolean isPrimary();
是否是主要的候选对象,类有多个实现类的时候,注入没有其他配置的时候会选择primary的候选这注入  
生命周期方法
@Nullable
String getInitMethodName();
初始化方法  
@Nullable
String getDestroyMethodName();
销毁方法  

 

你可能感兴趣的:(Spring)