当前位置: 首页 > news >正文

云做网站培训机构连锁加盟

云做网站,培训机构连锁加盟,抖音短视频seo优化,河南住房和城乡建设厅官网简介 在spring中占位符用${}表示#xff0c;他可以很好的实现将变动的数据与代码分离#xff0c;这部分变化的数据就可以使用配置文件等诸多手段动态配置 spring中的占位符应用的非常广泛#xff0c;比如Value注解 RequestMapping Feign等都支持${} spring为该功能定义了…简介 在spring中占位符用${}表示他可以很好的实现将变动的数据与代码分离这部分变化的数据就可以使用配置文件等诸多手段动态配置 spring中的占位符应用的非常广泛比如Value注解 RequestMapping Feign等都支持${} spring为该功能定义了一个接口 StringValueResolver可以自定义实现类 可以通过beanFactory.addEmbeddedValueResolver()设置自己的解析器 默认占位符解析器 源码解析 在实例化非懒加载单例Bean之前就会设置一个默认的占位符解析器如下 org.springframework.context.support.AbstractApplicationContext#finishBeanFactoryInitialization if (!beanFactory.hasEmbeddedValueResolver()) {beanFactory.addEmbeddedValueResolver(strVal - getEnvironment().resolvePlaceholders(strVal)); }其实就是从环境变量中根据key找到value环境变量上节已经介绍过了,占位符解析代码如下 private final ListStringValueResolver embeddedValueResolvers new CopyOnWriteArrayList();public void addEmbeddedValueResolver(StringValueResolver valueResolver) {this.embeddedValueResolvers.add(valueResolver); }public String resolveEmbeddedValue(Nullable String value) {if (value null) {return null;}String result value;for (StringValueResolver resolver : this.embeddedValueResolvers) {result resolver.resolveStringValue(result);if (result null) {return null;}}return result; }遍历StringValueResolver解析器由于spring默认值添加了一个就是上面的getEnvironment().resolvePlaceholders(strVal)。 大概逻辑就是找一下有没有占位符没有就直接返回原值如果有就环境变量找一下如果没有就使用默认值 值得关注的是并不是找 ${ 开头的而是任意地方可以匹配到就行所有例如 a${b:c}这样都是可以的 占位符定义如下 public static final String PLACEHOLDER_PREFIX ${; public static final String PLACEHOLDER_SUFFIX };public static final String VALUE_SEPARATOR :; // 看是否有默认值resolvePlaceholders最终进入到如下代码 其实就是上节介绍的环境变量最终保存的地方,从环境变量获取 protected T T getProperty(String key, ClassT targetValueType, boolean resolveNestedPlaceholders) {if (this.propertySources ! null) {// propertySources就是上节介绍的各种环境变量操作系统变量启动参数变量配置文件等for (PropertySource? propertySource : this.propertySources) {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);}}}return null; }测试 下面我们简单测试下 public static void main(String[] args) {System.setProperty(uri, getOrderId);AnnotationConfigApplicationContext context new AnnotationConfigApplicationContext(AppConfig.class);String value context.getBeanFactory().resolveEmbeddedValue(/api/${uri:xx});System.out.println(value); }输出/api/getOrderId自定义占位符解析 自定义占位符解析只需要实现StringValueResolver就可以了 例如 public static void main(String[] args) {System.setProperty(uri, getOrderId);AnnotationConfigApplicationContext context new AnnotationConfigApplicationContext();context.getBeanFactory().addEmbeddedValueResolver(strVal - {strVal strVal.replaceAll(\\[order]:, );return context.getEnvironment().resolvePlaceholders(strVal);});context.register(AppConfig.class);context.refresh();String value context.getBeanFactory().resolveEmbeddedValue(/api/[order]:${uri:xx});System.out.println(value);}输出/api/getOrderId总结 占位符的解析就到这里了后面我们会介绍spring表达式 欢迎关注学习不迷路
http://www.pierceye.com/news/418744/

相关文章:

  • 网站开发的项目需求山东省住房和城乡建设厅电话
  • 网站建设初期推广方式安徽网站建设价格
  • 淘宝购买网站建设工业皮带怎么做免费的网站
  • 华城建设集团有限公司官方网站嵌入式软件开发教程
  • 建设邮箱网站桔子建站官网
  • 电子商务网站模板xampp下安装wordpress
  • 可以做动图的视频网站校园网站建设的目的
  • 专业网站制作公司塞尼铁克dw网页设计作品简单
  • 福州做网站公司有哪些中小企业网站制作塞尼铁克
  • 公司网站 钓鱼网站网站建设实训报告的内容怎么写
  • 摄影网站建设内容硬件开发语言有哪些
  • 怎么在主机上的建设网站做网站后台需要写代码吗
  • 网站建设发信息wordpress 科技类主题
  • 一站式进货平台网站建设为什么做网站编辑
  • 免费建站哪家好网站商城建设合同免费下载
  • 网站开发filter北京互联网
  • 德州市市政工程建设总公司网站设计公司的运营模式
  • 网站源码怎么弄境外注册网站
  • 肥城网站建设视频解析接口网站怎么做
  • 深圳做互联网教网站公司五百亿网站建设
  • 如何建自己网站周口网站建设费用
  • 延安网站建设哪家专业网站建设的大功效
  • 做网站交互demo工具服务器中安装wordpress
  • 2017年网站建设市场分析2345浏览器官网网址
  • 超大型网站建设怎么打广告吸引客户
  • 阳泉 网站建设合作国际网站设计
  • 东莞网站优化快速排名wordpress自适应设置宽度
  • wordpress的站点地址怎么设置青岛seo网站建设
  • wordpress 获取文章标签泰安企业网站seo
  • 网站可分为哪两种类型jsp网站建设项目实战 pdf