Spring框架之基础类—ChildBeanDefinition实现类
来源:互联网 发布:java小项目开发 编辑:程序博客网 时间:2024/06/09 15:47
一、ChildBeanDefinition简介
该Bean的定义是从其父节点继承设置,子Bean定义对其父级Bean定义有着固定的依赖关系。
子bean定义将继承来自父类的构造函数参数值(在构造函数中调用父级Bean的构造函数)、属性值和方法,并可以选择添加新值。
如果指定了init方法、销毁方法和/或静态工厂方法,它们将覆盖相应的父设置。其余的设置将始终从子定义中获取:依赖、自动装配模式、依赖项检查、单例、延迟初始化。
从spring2.5开始,以编程方式注册bean定义的首选方法是GenericBeanDefinition类,它允许通过GenericBeanDefinition的setParentName方法动态地定义父依赖项。这有效地取代了大多数用例的ChildBeanDefinition类。
二、ChildBeanDefinition源码详解
@SuppressWarnings("serial")public class ChildBeanDefinition extends AbstractBeanDefinition { private String parentName; // 父级Bean的名称 /** * 构造器 */ public ChildBeanDefinition(String parentName) { super(); this.parentName = parentName; } public ChildBeanDefinition(String parentName, MutablePropertyValues pvs) { super(null, pvs); this.parentName = parentName; } public ChildBeanDefinition(String parentName, ConstructorArgumentValues cargs, MutablePropertyValues pvs) { super(cargs, pvs); this.parentName = parentName; } public ChildBeanDefinition(String parentName, Class<?> beanClass, ConstructorArgumentValues cargs, MutablePropertyValues pvs) { super(cargs, pvs); this.parentName = parentName; setBeanClass(beanClass); } public ChildBeanDefinition(String parentName, String beanClassName, ConstructorArgumentValues cargs, MutablePropertyValues pvs) { super(cargs, pvs); this.parentName = parentName; setBeanClassName(beanClassName); } public ChildBeanDefinition(ChildBeanDefinition original) { super(original); } /** * 基础方法 */ @Override public void setParentName(String parentName) { this.parentName = parentName; } @Override public String getParentName() { return this.parentName; } @Override public void validate() throws BeanDefinitionValidationException { super.validate(); if (this.parentName == null) { throw new BeanDefinitionValidationException("'parentName' must be set in ChildBeanDefinition"); } } @Override public AbstractBeanDefinition cloneBeanDefinition() { return new ChildBeanDefinition(this); } @Override public boolean equals(Object other) { if (this == other) { return true; } if (!(other instanceof ChildBeanDefinition)) { return false; } ChildBeanDefinition that = (ChildBeanDefinition) other; return (ObjectUtils.nullSafeEquals(this.parentName, that.parentName) && super.equals(other)); } @Override public int hashCode() { return ObjectUtils.nullSafeHashCode(this.parentName) * 29 + super.hashCode(); } @Override public String toString() { StringBuilder sb = new StringBuilder("Child bean with parent '"); sb.append(this.parentName).append("': ").append(super.toString()); return sb.toString(); }}
阅读全文
0 0
- Spring框架之基础类—ChildBeanDefinition实现类
- Spring框架之基础类—BeanMetadataAttribute实现类
- Spring框架之基础类—GenericBeanDefinition实现类
- Spring框架之基础类—AnnotatedGenericBeanDefinition实现类
- Spring框架之基础类—ScannedGenericBeanDefinition实现类
- Spring RootBeanDefinition,ChildBeanDefinition,GenericBeanDefinition
- Spring RootBeanDefinition,ChildBeanDefinition,GenericBeanDefinition
- Spring框架之基础类—AttributeAccessorSupport抽象类
- Spring框架之基础类—AbstractBeanDefinition抽象类
- Spring框架之基础类—BeanMetadataElement接口
- Spring框架之基础类—AttributeAccessor接口
- Spring框架之基础类—BeanDefinition接口
- Spring框架之基础类—AnnotatedBeanDefinition接口
- Spring框架之基础类—RootBeanDefinition接口
- Spring框架之注册—SimpleAliasRegistry实现类
- Spring框架之注册—DefaultSingletonBeanRegistry实现类
- Spring框架之注册—SimpleBeanDefinitionRegistry实现类
- Spring框架基础之注解
- ios-是否需要合成支持模拟器和真机架构的静态库
- Webview 用法
- POI设置excel格式为文本格式
- Unity-协同程序
- JavaScript的复习心得
- Spring框架之基础类—ChildBeanDefinition实现类
- frangment 展示 隐藏 切换
- MongoDB快速学习
- QprogressBar 和 QSlider 样式设置
- 异常处理
- 《魂斗罗归来》之状态模式VS策略模式
- .clang-format
- 文章标题
- 作业2:用Verilog语言实现二十进制计数器