zoukankan      html  css  js  c++  java
  • springboot中Properties注解的实现

      关于@PropertySources注解的理解:http://www.imooc.com/article/252889?block_id=tuijian_wz

    public interface PropertySources extends Iterable<PropertySource<?>> {
    
    	/**
    	 * Return a sequential {@link Stream} containing the property sources.
    	 * @since 5.1
    	 */
    	default Stream<PropertySource<?>> stream() {
    		return StreamSupport.stream(spliterator(), false);
    	}
    	/**
    	 * Return whether a property source with the given name is contained.
    	 * @param name the {@linkplain PropertySource#getName() name of the property source} to find
    	 */
    	boolean contains(String name);
    
    	/**
    	 * Return the property source with the given name, {@code null} if not found.
    	 * @param name the {@linkplain PropertySource#getName() name of the property source} to find
    	 */
    	@Nullable
    	PropertySource<?> get(String name);
    这就是PropertySources的接口,那么它的实现类在哪里?是MutablePropertySources,
    }
    

      PropertySources是由工厂类生成的,看看DefaultPropertySourceFactory

    public class DefaultPropertySourceFactory implements PropertySourceFactory {
    
        @Override
        public PropertySource<?> createPropertySource(@Nullable String name, EncodedResource resource) throws IOException {
            return (name != null ? new ResourcePropertySource(name, resource) : new ResourcePropertySource(resource));
        }
    
    }

    然后又调用ResourcePropertySource类,在该类下,实现了对配置文件的加载loadProperties(resource).

    public class ResourcePropertySource extends PropertiesPropertySource {
    
    	/** The original resource name, if different from the given name. */
    	@Nullable
    	private final String resourceName;
    
    
    	/**
    	 * Create a PropertySource having the given name based on Properties
    	 * loaded from the given encoded resource.
    	 */
    	public ResourcePropertySource(String name, EncodedResource resource) throws IOException {
    		super(name, PropertiesLoaderUtils.loadProperties(resource));
    		this.resourceName = getNameForResource(resource.getResource());
    	}
    

      剩下的就是java的文件的加载过程,细节就不再讨论了

  • 相关阅读:
    React生命周期函数
    云效创建项目应用以及流水线的说明文档
    前端工作规范
    阮一峰 前端系列教程
    js对时间戳的处理 获取时间,昨天,今天,明天,时间不同格式
    当天时间小案例--时间戳,获取年月日星期时分秒
    React中构造函数constractor,为什么要用super(props)
    Java8新特性——Optional类的使用(有效的避免空指针异常)
    Java8新特性——新一套时间API的使用
    Java8新特性——StreamAPI 的使用
  • 原文地址:https://www.cnblogs.com/Robin008/p/10251869.html
Copyright © 2011-2022 走看看