1 Star 0 Fork 156

南风不竞 / Spring-Analysis

forked from huifer / Code-Analysis 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
Spring-ManagedSet.md 1.27 KB
一键复制 编辑 原始数据 按行查看 历史

Spring ManagedSet

  • 类全路径: org.springframework.beans.factory.support.ManagedSet

  • 类图: ManagedSet.png

  • 对应标签 <set>

      <property name="someSet">
          <set>
              <value>just some string</value>
              <ref bean="myDataSource" />
          </set>
      </property>
    • 解析xml的处理方法: org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseSetElement 这里不做具体展开

方法列表

merge

  • ManagedSet 作为Mergeable的实现类, 其操作的对象为LinkedHashSet, 想到合并可以联想到 LinkedHashSet#addAll => java.util.Set.addAll Spring 中也正是如此进行操作的. 详细代码如下
	@Override
	@SuppressWarnings("unchecked")
	public Set<E> merge(@Nullable Object parent) {
		if (!this.mergeEnabled) {
			throw new IllegalStateException("Not allowed to merge when the 'mergeEnabled' property is set to 'false'");
		}
		if (parent == null) {
			return this;
		}
		if (!(parent instanceof Set)) {
			throw new IllegalArgumentException("Cannot merge with object of type [" + parent.getClass() + "]");
		}
		Set<E> merged = new ManagedSet<>();
		merged.addAll((Set<E>) parent);
		merged.addAll(this);
		return merged;
	}
Java
1
https://gitee.com/limengcanyu/spring-analysis.git
git@gitee.com:limengcanyu/spring-analysis.git
limengcanyu
spring-analysis
Spring-Analysis
master

搜索帮助