spring应用手册(第五部分)
要了解BeanDefinition接口,你必须了解springBean的加载流程。
springBean加载流程:
①spring会加载所有符合要求的class(就是我们配置或者注解的类)。
②解析这些类相关信息
③根据解析的信息生成注册信息。这里的注册信息就是封装在BeanDefinition对象中。
④根据bean的scope属性进行实例化。
⑤执行其他的接口,比如Aware等等。
所以BeanDefinition就是来分装springBean的注册信息的,spring生成的springBean就是根据BeanDefinition对象生成的。
看看BeanDefinition源码:
package org.springframework.beans.factory.config;
public interface BeanDefinition extends AttributeAccessor,BeanMetadataElement {
String SCOPE_SINGLETON = "singleton";
String SCOPE_PROTOTYPE = "prototype";
int ROLE_APPLICATION = 0;
int ROLE_SUPPORT = 1;
int ROLE_INFRASTRUCTURE = 2;
//parent属性的值
void setParentName(@Nullable String s);
@Nullable
String getParentName();
//实际的类的类名
void setBeanClassName(@Nullable String s);
@Nullable
String getBeanClassName();
//当前类scope
void setScope(@Nullable String s);
@Nullable
String getScope();
//是否延迟加载属性
void setLazyInit(boolean b);
boolean isLazyInit();
//dependsOn 属性值
void setDependsOn(@Nullable String... strings);
@Nullable
String[] getDependsOn();
//自动注入是否忽略属性值
void setAutowireCandidate(boolean b);
boolean isAutowireCandidate();
//自动注入时是否优先选择属性
void setPrimary(boolean b);
boolean isPrimary();
//factoryBean的名字配置(工厂方式生成Bean的时候使用)
void setFactoryBeanName(@Nullable String s);
@Nullable
String getFactoryBeanName();
//factoryMethod的名字配置(工厂方式生成Bean的时候使用)
void setFactoryMethodName(@Nullable String s);
@Nullable
String getFactoryMethodName();
//构造方法参数
ConstructorArgumentValues getConstructorArgumentValues();
default boolean hasConstructorArgumentValues() { /* compiled code */ }
MutablePropertyValues getPropertyValues();
default boolean hasPropertyValues() { /* compiled code */ }
//初始化方法配置
void setInitMethodName(@Nullable String s);
@Nullable
String getInitMethodName();
//资源释放方法名称
void setDestroyMethodName(@Nullable String s);
@Nullable
String getDestroyMethodName();
void setRole(int i);
int getRole();
//描述
void setDescription(@Nullable String s);
@Nullable
String getDescription();
//是否单利
boolean isSingleton();
//是否多利
boolean isPrototype();
//是否抽象
boolean isAbstract();
//资源描述
@Nullable
String getResourceDescription();
//获取原始的BeanDefinition对象
@Nullable
BeanDefinition getOriginatingBeanDefinition();
}
源码中重要的属性我已经在代码中进行注释,从中我们可以发现BeanDefintion中几乎包含了所有我们配置bean的所有属性。
以上就是BeanDefintion的简介。
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/q2780004063/article/details/109461443
内容来源于网络,如有侵权,请联系作者删除!