spring-boot 驼峰式嵌套属性作为环境变量

2023-12-29

我有一个 Spring Boot 应用程序,并希望在一个带有注释的类中设置环境变量@ConfigurationProperties第二级嵌套属性是驼峰式大小写。这是该类的一个示例:

@SpringBootApplication
@EnableConfigurationProperties(SpringApp.Props.class)
@RestController
public class SpringApp {

  private Props props;

  @ConfigurationProperties("app")
  public static class Props {
    private String prop;
    private Props nestedProps;

    public String getProp() {
      return prop;
    }

    public void setProp(String prop) {
      this.prop = prop;
    }

    public Props getNestedProps() {
      return nestedProps;
    }

    public void setNestedProps(Props nestedProps) {
      this.nestedProps = nestedProps;
    }

  }

  @Autowired
  public void setProps(Props props) {
    this.props = props;
  }

  public static void main(String[] args) {
    SpringApplication.run(SpringApp.class, args);
  }

  @RequestMapping("/")
  Props getProps() {
    return props;
  }

}

当我尝试使用以下环境变量运行应用程序时:

APP_PROP=val1
APP_NESTED_PROPS_PROP=val2
APP_NESTED_PROPS_NESTED_PROPS_PROP=val3

我从该服务收到以下响应:

{
  "prop": "val1",
  "nestedProps": {
    "prop": "val2",
    "nestedProps": null
  }
}

这是预期的行为吗?我期待这样的事情:

{
  "prop": "val1",
  "nestedProps": {
    "prop": "val2",
    "nestedProps": {
      "prop": "val3",
      "nestedProps": null
    }
  }
}

当我通过应用程序参数设置属性时(例如:--app.prop=val1 --app.nestedProps.prop=val2 --app.nestedProps.nestedProps.prop=val3),我得到了预期的回应。

是否有任何使用环境变量且无需修改代码即可获得预期行为的解决方法?

注意:我做了一些调试,似乎问题源于org.springframework.boot.bind.RelaxedNames没有为这种情况生成候选人。这是我为了演示它所做的测试(它失败了):

@Test
public void shouldGenerateRelaxedNameForCamelCaseNestedPropertyFromEnvironmentVariableName() {
  assertThat(new RelaxedNames("NESTED_NESTED_PROPS_PROP"), hasItem("nested.nestedProps.prop"));
}

我会尝试使用 NESTED_NESTEDPROPS_PROP,bcs 'nestedProps' 是一个属性

属性名称中不得使用 _ 分隔符。 IE。 数据库平台必须写为 DATABASEPLATFORM 而不是 数据库平台。

source: https://github.com/spring-projects/spring-boot/wiki/Relaxed-Binding-2.0 https://github.com/spring-projects/spring-boot/wiki/Relaxed-Binding-2.0

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

spring-boot 驼峰式嵌套属性作为环境变量 的相关文章

  • 有没有更简单的方法来分割/重建字符串?

    目前我正在使用String split 像这样 String tmp props get i getFullName split String name for int j 1 j lt tmp length j if j gt 1 nam
  • 我在使用 JavaFX 绘制十字时遇到问题

    我正在尝试编写代码 在网格上对角绘制 3 个形状 前两个形状是正方形和圆形 我能做到 然而 第三种形状让我有些悲伤 我应该画一个十字 T 版本 而不是 X 每次我写出代码时 它看起来就像一个侧面 我知道我只是错过了一些简单的东西 但我真的很
  • 像 Google Play 商店一样在垂直 RecyclerView 中动态不同图像水平 RecyclerView

    我一直在关注这个教程 http android pratap blogspot co za 2015 12 horizo ntal recyclerview in vertical html http android pratap blog
  • 查找所有数组的长度多维数组,Java

    我想使用多维数组来存储数据网格 但是 我还没有找到一种简单的方法来查找长度2nd数组的一部分 例如 boolean array new boolean 3 5 System out println array length 只会输出3 是否
  • Glassfish 4 - JDBC 领域

    Glassfish 4 中的密码加密算法和摘要算法有什么区别 因为Password加密算法不能为空 所以我使用了MD5 Encoding使用了Hex 摘要算法为空 因此默认为 SHA 256 但是 如果我使用 JAAS 制作一个简单的登录应
  • 如何将日期字符串解析为Date? [复制]

    这个问题在这里已经有答案了 如何将下面的日期字符串解析为Date object String target Thu Sep 28 20 29 30 JST 2000 DateFormat df new SimpleDateFormat E
  • Eclipse 无法识别 persistence.xml 的内容

    我在 eclipse 中收到以下错误 persistence xml 文件没有可识别的内容 我的 persistence xml 文件在我的应用程序中工作得很好 但 eclipse 一直给我这个错误 我在移动文件并使用 m2eclipse
  • Eclipse Oxygen - 该项目未构建,因为其构建路径不完整

    我刚刚安装了 Eclipse Oxygen 并尝试在工作台中打开现有项目 但收到此错误 该项目未构建 因为其构建路径不完整 不能 找到 java lang Object 的类文件 修复构建路径然后尝试 建设这个项目 我尝试右键单击该项目 转
  • 在 libgdx 中渲染 box2d

    我有一个使用 FitViewport 的大小为 800x480 的游戏世界 并且最初使用像素渲染 box2d 实体 固定装置 因此所有物理效果都显得浮动且缓慢 查看文档后 我意识到 box2d 使用度量单位 因此我将 box2d 位置和大小
  • Eclipse RCP - 将视图与编辑器区域堆叠?

    在开发 Eclipse RCP 应用程序时 是否可以将视图与编辑器区域堆叠在一起 像这样 我有多个列表 表格 我想创建一种预览组合 当通过单击鼠标选择列表上的项目时 我希望我的预览合成显示该项目的数据 如果用户双击某个项目 我想在预览合成后
  • java.lang.ClassNotFoundException: org.jboss.logging.Logger

    我有一个奇怪的问题 我有一个JMS https en wiktionary org wiki JMS客户端应用程序和MDB https en wikipedia org wiki Enterprise JavaBeans Message d
  • 自 JRE 1.7.0_25 起,Batik 无法进行转换

    自从我更新到 JAVA 1 7 0 25 以来 蜡染在应用转换时会抛出异常 堆栈跟踪是 java awt image ImagingOpException Unable to transform src image at java awt
  • java中永远不会出现的异常

    我为点和向量编写一个类 我想用它们来计算向量的点和范数 这些是点类和向量类 public class Point public float x y public class MyVector public Point start end 我
  • gwt 文本框添加更改处理程序

    我有一个从设计师那里收到的文本框 但是我在 GWT 中编写了操作 问题是文本框为空 但是当通过按下按钮用值填充文本框时 将显示警报框 通知值已更改 但没有成功 帮助我 TextBox zip1 null function onModuleL
  • 按钮悬停和按下效果 CSS Javafx

    我是 CSS 新手 为按钮定义了以下 CSS 样式 其中id并且应用了自定义样式 但不应用悬停和按下效果 bevel grey fx background color linear gradient f2f2f2 d6d6d6 linear
  • 在Java内存管理中,“PS”代表什么?

    每当我看到 Java 中对内存的引用时 各种空格总是以 PS 为前缀 PS 是什么意思 它开始困扰我 到目前为止我唯一的猜测是 泳池空间 但这将是多余的 例子 PS伊甸园空间 PS 幸存者空间 PS 终身空间 老一代 PS Perm Gen
  • Android Webview:无法调用确定的可见性() - 从未见过 pid 的连接

    我有一个 Android Webview 当我单击链接下载文件 pdf 图像等 时 我收到一条错误消息 Error message Cannot call determinedVisibility never saw a connectio
  • Volley 在第一次调用方法时返回 null

    我正在尝试使用 volley 从服务器检索数据 但是当我第一次调用此方法时 我收到服务器的响应 但该方法返回 null 如果我第二次调用它 我会得到最后的响应 public String retrieveDataFromServer Str
  • 将 SQL 数据中的一行映射到 Java 对象

    我有一个 Java 类 其实例字段 以及匹配的 setter 方法 与 SQL 数据库表的列名相匹配 我想优雅地从表中获取一行 到 ResultSet 中 并将其映射到此类的实例 例如 我有一个 Student 类 其中包含实例字段 FNA
  • removeall 和removeif 的用例

    我找到了这个 fun main val list MutableList

随机推荐

  • 如何在R中保存foreach循环的输出

    我在保存数据输出后遇到问题foreach loop 这是读取我的数据并处理它的函数 readFiles lt function x data lt read table filelist skip grep Begin Data Text
  • Java 中最终字符串的串联是如何完成的?

    当我编译这个片段时 public class InternTest public static void main String strings final String str1 str final String str2 ing Str
  • Netbeans 中的 Git 控制台

    我刚刚安装了 Netbeans 8 我想开始使用 Git 有很多按钮 菜单等 但在哪里可以找到 Git 控制台 我使用Windows 如果您想要控制台 您可能最好直接安装它 IDE 通常只提供菜单集成选项 Git 的网站有 Windows
  • Symfony2主义mysql IN查询

    我有一系列产品 ID 我必须像这样进行查询 SELECT FROM products WHERE pid IN 1 2 8 4 etc 我的 id 位于变量 pids 中 qb em gt createQueryBuilder query
  • 如何使用 Amazon AWS Elastic Beanstalk 安装 PHP 扩展?

    我们在 EC2 实例上的 PHP 应用程序中使用 aws elastic beanstalk 由于我们选择了负载平衡 它会不断地更改实例 我想知道如果我们安装 PHP 插件 它会受到实例更改的影响还是在新实例中也可用 提出这个问题是因为我们
  • macOS 上 CLion 中的 std::unordered_map

    我怎样才能看到元素std unordered map在 CLion 调试器中 有一些recipe https blog jetbrains com clion 2015 05 debug clion 怎么看std map元素 但它不适用于s
  • 添加两个 NSDate

    我有两个 NSDate 日期和时间 我想以这样的方式添加它们 以便我从日期中获取日期 从时间中获取时间 关于我如何做到这一点有什么建议吗 Cheers Nik 如果我没听错的话NSDates dateByAddingTimeInterval
  • 在 Symfony 1.4 中重命名“web”文件夹

    我想在 symfony 1 4 中将 web 文件夹重命名为 html 不幸的是 搜索这方面的文档却一无所获 除了在 1 0 中如何实现这一点之外 这似乎不起作用 首先 您不必重命名它 您可以只创建一个符号链接 除非您运行的是 Window
  • 使用 MySQL 和 ejabberd 进行高效的外部排班

    Question 请注意 这个问题的解决方案就在下面 使用 Eugen 的视图思想 我正在为 PHP MySQL 用户驱动的网站编写一个聊天模块 允许两个用户交朋友 并选择 eJabberd 作为聊天系统 我已经使用 PHP 守护程序成功设
  • 透明外壳。如何将很长的 JavaScript 拆分为多行?

    我有一个 JS 压缩文件 长约 14k 并且在一行中 这会在 Clear Case 上造成一些问题 导致无法办理登机手续 有没有办法修复clearcase 如果我想将JS文件拆分为多行 插入换行符时需要注意什么吗 显然我不会分割字符串或数字
  • schema.org 中的产品类别?

    用作参考 https support google com webmasters answer 146750 hl en https support google com webmasters answer 146750 hl en 您会注
  • 如何加密/解密 XML 文件?

    我正在尝试加密 解密 XML 文件 我找到了这个加密示例 但我不知道如何解密 任何想法 谢谢 Load this XML file System Xml XmlDocument myDoc new System Xml XmlDocumen
  • ArCore Sceneform:检测图像时播放.mp4视频

    当我找到图像时 我想在其上方放置文本和视频 文本视图放置在场景上 但视频没有放置在场景中 它只是添加到中间的主布局中 我正在使用组件 VideoView 我不确定这是问题所在 override fun onCreate savedInsta
  • 如何使用PHP给上传的图片添加水印

    如何使用 PHP 对上传的图片添加水印 示例链接 http www kitebeaches com kitesurf uploadPicture NIRVANA Club Village html http www kitebeaches
  • TEmbeddedWB/TWebbrowser:window.external是一个空对象,但可以调用函数,为什么它首先是“空”?

    使用案例 先一些信息 我制作了一些 HTML CSS3 Javascript 游戏 可以在特定于平台的可执行文件中的 WebView 嵌入式浏览器中的不同平台上运行 我自己设计了它 因为我厌倦了周围所有的 框架 这些 框架 告诉我使用他们的
  • XMPPFramework - 实施群聊 (MUC)

    我正在开发 iOS 聊天客户端 有人可以帮我进行多用户聊天吗 我已经实现了 Robbiehanson 的 XMPPFramework 谁能告诉我如何使用此框架获取组列表并在服务器中创建组 提前致谢 获取房间列表 NSString serve
  • 无法在已禁用的应用程序上获得对 public_profile 的高级访问权限?

    昨晚 Facebook 禁用了我们的应用程序 理由如下 开发者政策 6 1 验证您是否已正确集成登录 您的应用程序在测试过程中不应崩溃或挂起 在登录期间 您的应用程序崩溃或过度挂起 为尝试使用您的应用程序的人带来了糟糕的体验 为了确保此流程
  • 无法初始化 Eureka servlet 上下文

    我正在将我的实际项目升级到 spring boot 2 5 2 我有一个配置服务器 一个 zuul 网关和一个发现服务器 现在我看到 Spring Cloud 在我的发现服务器中有一个嵌入式网关 我想使用它 所以我最后只有配置服务器和发现服
  • 取消普通 ECMAScript 6 Promise 链

    有没有办法清除 thenJavaScript 的 sPromise实例 我在上面编写了一个 JavaScript 测试框架QUnit https qunitjs com 该框架通过在一个框架中运行每个测试来同步运行测试Promise 抱歉这
  • spring-boot 驼峰式嵌套属性作为环境变量

    我有一个 Spring Boot 应用程序 并希望在一个带有注释的类中设置环境变量 ConfigurationProperties第二级嵌套属性是驼峰式大小写 这是该类的一个示例 SpringBootApplication EnableCo