Spring源码学习--BeanDefinitionHolder

来源:互联网 发布:刷会员的软件 编辑:程序博客网 时间:2024/05/01 12:35

上一篇博客Spring源码学习--Bean注入解析结果BeanDefinition我们已经介绍了BeanDefinition相关的知识,这边博客我们介绍一下BeanDefinitionHolder,简单来说其就是一个BeanDefinition的持有者,其定义了一下变量,并对以下变量提供get和set操作。

private final BeanDefinition beanDefinition;private final String beanName;private final String[] aliases;

BeanDefinitionHolder的源码中都是有关这几个变量的get和set操作。

public class BeanDefinitionHolder implements BeanMetadataElement {private final BeanDefinition beanDefinition;private final String beanName;private final String[] aliases;public BeanDefinitionHolder(BeanDefinition beanDefinition, String beanName) {this(beanDefinition, beanName, null);}public BeanDefinitionHolder(BeanDefinition beanDefinition, String beanName, String[] aliases) {Assert.notNull(beanDefinition, "BeanDefinition must not be null");Assert.notNull(beanName, "Bean name must not be null");this.beanDefinition = beanDefinition;this.beanName = beanName;this.aliases = aliases;}public BeanDefinitionHolder(BeanDefinitionHolder beanDefinitionHolder) {Assert.notNull(beanDefinitionHolder, "BeanDefinitionHolder must not be null");this.beanDefinition = beanDefinitionHolder.getBeanDefinition();this.beanName = beanDefinitionHolder.getBeanName();this.aliases = beanDefinitionHolder.getAliases();}public BeanDefinition getBeanDefinition() {return this.beanDefinition;}public String getBeanName() {return this.beanName;}public String[] getAliases() {return this.aliases;}@Overridepublic Object getSource() {return this.beanDefinition.getSource();}public boolean matchesName(String candidateName) {return (candidateName != null && (candidateName.equals(this.beanName) ||candidateName.equals(BeanFactoryUtils.transformedBeanName(this.beanName)) ||ObjectUtils.containsElement(this.aliases, candidateName)));}public String getShortDescription() {StringBuilder sb = new StringBuilder();sb.append("Bean definition with name '").append(this.beanName).append("'");if (this.aliases != null) {sb.append(" and aliases [").append(StringUtils.arrayToCommaDelimitedString(this.aliases)).append("]");}return sb.toString();}public String getLongDescription() {StringBuilder sb = new StringBuilder(getShortDescription());sb.append(": ").append(this.beanDefinition);return sb.toString();}@Overridepublic String toString() {return getLongDescription();}@Overridepublic boolean equals(Object other) {if (this == other) {return true;}if (!(other instanceof BeanDefinitionHolder)) {return false;}BeanDefinitionHolder otherHolder = (BeanDefinitionHolder) other;return this.beanDefinition.equals(otherHolder.beanDefinition) &&this.beanName.equals(otherHolder.beanName) &&ObjectUtils.nullSafeEquals(this.aliases, otherHolder.aliases);}@Overridepublic int hashCode() {int hashCode = this.beanDefinition.hashCode();hashCode = 29 * hashCode + this.beanName.hashCode();hashCode = 29 * hashCode + ObjectUtils.nullSafeHashCode(this.aliases);return hashCode;}}
原创粉丝点击