1 Star 0 Fork 156

Gordon.Gu / Spring-Analysis

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

Spring ManagedList

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

  • 类图: ManagedList.png

  • 对应标签 <list>

      <property name="someList">
          <list>
              <value>a list element followed by a reference</value>
          </list>
      </property>
    • 解析xml的处理方法: org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseListElement 这里不做具体展开

方法列表

merge

  • ManagedList 作为Mergeable的实现类, 其操作的对象为ArrayList, 想到合并可以联想到 ArrayList#addAll =>java.util.List#addAll(java.util.Collection<? extends E>) Spring 中也正是如此进行操作的. 详细代码如下
@Override
@SuppressWarnings("unchecked")
public List<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 List)) {
      throw new IllegalArgumentException("Cannot merge with object of type [" + parent.getClass() + "]");
   }
   // 创建对象
   List<E> merged = new ManagedList<>();
   // 放入 集合列表中
   merged.addAll((List<E>) parent);
   merged.addAll(this);
   return merged;
}
Java
1
https://gitee.com/gu-yan/spring-analysis.git
git@gitee.com:gu-yan/spring-analysis.git
gu-yan
spring-analysis
Spring-Analysis
master

搜索帮助