BeanDefinition基础信息讲解

网友投稿 230 2023-01-13


BeanDefinition基础信息讲解

public class BeanDefinitionHolder implements BeanMetadataElement {

private final BeanDefinition beanDefinition;

private final String beanName;//beanID

@Nullable

private final String[] aliases;//Bean的别名数组

}

public interface BeanDefinition extends AttributeAccessor, BeanMetadataElement {

// 我们可以看到,默认只提供 sington 和 prototype 两种,

// 很多读者可能知道还有 request, session, globalSession, application, websocket 这几种,

// 不过,它们属于基于 web 的扩展。

String SCOPE_SINGLETON = ConfigurableBeanFactory.SCOPE_SINGLETON;

String SCOPE_PROTOTYPE = ConfigurableBeanFactory.SCOPE_PROTOTYPE;

// 比较不重要,直接跳过吧

int ROLE_APPLICATION = 0;

int ROLE_SUPPORT = 1;

int ROLE_INFRASTRUCTURE = 2;

// 设置父 Bean,这里涉及到 bean 继承,不是 java 继承。请参见附录的详细介绍

// 一句话就是:继承父 Bean 的配置信息而已

void setParentName(String parentName);

// 获取父 Bean

String getParentName();

// 设置 Bean 的类名称,将来是要通过反射来生成实例的

void setBeanClassName(String beanClassName);

// 获取 Bean 的类名称

String getBeanClassName();

// 设置 bean 的 scope

void setScope(String scope);

String getScope();

// 设置是否懒加载

void setLazyInit(boolean lazyInit);

boolean isLazyInit();

// 设置该 Bean 依赖的所有的 Bean,注意,这里的依赖不是指属性依赖(如 @Autowire 标记的),

// 是 depends-on="" 属性设置的值。

void setDependsOn(String... dependsOn);

// 返回该 Bean 的所有依赖

String[] getDependsOn();

// 设置该 Bean 是否可以注入到其他 Bean 中,只对根据类型注入有效,

// 如果根据名称注入,即使这边设置了 false,也是可以的

void setAutowireCandidate(boolean autowireCandidate);

// 该 Bean 是否可以注入到其他 Bean 中

boolean isAutowireCandidate();

// 主要的。同一接口的多个实现,如果不指定名字的话,Spring 会优先选择设置 primary 为 true 的 bean

void setPrimary(boolean primary);

// 是否是 primary 的

boolean isPrimary();

// 如果该 Bean 采用工厂方法生成,指定工厂名称。对工厂不熟悉的读者,请参加附录

// 一句话就是:有些实例不是用反射生成的,而是用工厂模式生成的

void setFactoryBeanName(String factoryBeanName);

// 获取工厂名称

String getFactoryBeanName();

// 指定工厂类中的 工厂方法名称

void setFactoryMethodName(String factoryMethodName);

// 获取工厂类中的 工厂方法名称

String getFactoryMethodName();

// 构造器参数

ConstructorArgumentValues getConstructorArgumentValues();

// Bean 中的属性值,后面给 bean 注入属性值的时候会说到

MutablePropertyValues getPropertyValues();

// 是否 singleton

boolean isSingleton();

// 是否 prototype

boolean isPrototype();

// 如果这个 Bean 是被设置为 abstract,那么不能实例化,

// 常用于作为 父bean 用于继承,其实也很少用......

boolean isAbstract();

int getRole();

String getDescription();

String getResourceDescription();

public interface AttributeAccessor {

//设置类属性

void setAttribute(String var1, @Nullable Object var2);

@Nullable

Object getAttribute(String var1);

@Nullable

Object removeAttribute(String var1);

//是否拥有类属性

boolean hasAttribute(String var1);

//获取所有类属性名

String[] attributeNames();

}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:研发管理平台设计公司排名(设计软件公司排名)
下一篇:java接口测试用例框架(接口测试的测试用例怎么设计)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~