SpringBoot环境属性占位符解析及类型转换详解-创新互联

前提

创新互联服务项目包括站前网站建设、站前网站制作、站前网页制作以及站前网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,站前网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到站前省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

前面写过一篇关于Environment属性加载的源码分析和扩展,里面提到属性的占位符解析和类型转换是相对复杂的,这篇文章就是要分析和解读这两个复杂的问题。关于这两个问题,选用一个比较复杂的参数处理方法PropertySourcesPropertyResolver#getProperty,解析占位符的时候依赖到

PropertySourcesPropertyResolver#getPropertyAsRawString:

protected String getPropertyAsRawString(String key) {
 return getProperty(key, String.class, false);
}

protected  T getProperty(String key, Class targetValueType, boolean resolveNestedPlaceholders) {
 if (this.propertySources != null) {
  for (PropertySource<?> propertySource : this.propertySources) {
   if (logger.isTraceEnabled()) {
    logger.trace("Searching for key '" + key + "' in PropertySource '" +
       propertySource.getName() + "'");
   }
   Object value = propertySource.getProperty(key);
   if (value != null) {
    if (resolveNestedPlaceholders && value instanceof String) {
     //解析带有占位符的属性
     value = resolveNestedPlaceholders((String) value);
    }
    logKeyFound(key, propertySource, value);
    //需要时转换属性的类型
    return convertValueIfNecessary(value, targetValueType);
   }
  }
 }
 if (logger.isDebugEnabled()) {
  logger.debug("Could not find key '" + key + "' in any property source");
 }
 return null;
}

当前文章:SpringBoot环境属性占位符解析及类型转换详解-创新互联
网站URL:http://bzwzjz.com/article/dcicgi.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 四川成都网站制作 成都网站建设 成都网站设计 外贸网站建设 定制网站建设多少钱 重庆外贸网站建设 网站建设 成都网站制作 成都网站设计 成都品牌网站设计 手机网站建设 成都网站设计 高端品牌网站建设 成都网站建设公司 网站建设方案 成都模版网站建设 营销型网站建设 手机网站制作 网站建设公司 成都网站建设 企业网站建设 高端网站设计