PropertySource

PropertySource 是PropertySources 容器唯一可存储的元素。 
PropertySources  定义了一个借口: 
1:根据key,得到value 
2:遍历整个容器 
PropertySources 在SPRING 中的唯一实现是MutablePropertySources, 
MutablePropertySources 不仅实现借口定义的两个功能,还增加了可以插入,删除,替代的功能, 
并且,插入是有优先级概念的,这意味着PropertySource 在PropertySources中的插入顺序不是固定的, 
因此实际是MutablePropertySources内部采用的数据结构是链表形式的LinkedList 

虽然容器PropertySources提供了基本的查找功能.但是查找效率不高: 

public PropertySource<?> get(String name) {  
        return this.propertySourceList.get(this.propertySourceList.indexOf(PropertySource.named(name)));  
    }
首先新建一个ComparsionPropertySource对象:PropertySource.named(name) 
然后遍历这个List,找出该对象的位置, 
最后再一次遍历LIST,返回对应位置的PropertySources。 

Spring 又提供一个专门用来查找Property的接口 PropertyResolver。 
这个接口最重要的是提供了property value 的类型转换接口。 
该接口的一个实现PropertySourcesPropertyResolver ,重新实现了在PropertySources中查找PropertySource的接口,增加了对PlaceHolder的解析的接口。 

PropertyResolver 的主要目的就是查找配置(.properties,环境变量) 
PropertySource 则用途更全面。 
奇怪的是PropertySource 被设计为abstract class,而PropertyResolver 
被设计成interface。 

你可能感兴趣的:(spring,PropertySource)