不可变的@ConfigurationProperties

2023-12-21

Spring Boot 是否可以拥有不可变(最终)字段@ConfigurationProperties注解?下面的例子

@ConfigurationProperties(prefix = "example")
public final class MyProps {

  private final String neededProperty;

  public MyProps(String neededProperty) {
    this.neededProperty = neededProperty;
  }

  public String getNeededProperty() { .. }
}

到目前为止我尝试过的方法:

  1. Creating a @Bean of the MyProps class with two constructors
    • 提供两个构造函数:empty 和 withneededProperty争论
    • 该 bean 是用以下命令创建的new MyProps()
    • 该领域的结果是null
  2. Using @ComponentScan and @Component to provide the MyProps bean.
    • 结果是BeanInstantiationException -> NoSuchMethodException: MyProps.<init>()

我让它工作的唯一方法是为每个非最终字段提供 getter/setter。


从 Spring Boot 2.2 开始,终于可以定义一个不可变的类了@ConfigurationProperties.
文档 https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#features.external-config.typesafe-configuration-properties.constructor-binding展示了一个例子。
您只需要声明一个带有要绑定的字段的构造函数(而不是 setter 方式)并添加@ConstructorBinding https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/context/properties/ConstructorBinding.html类级别的注释指示应使用构造函数绑定。
所以你的实际代码没有任何设置器现在就可以了:

@ConstructorBinding
@ConfigurationProperties(prefix = "example")
public final class MyProps {

  private final String neededProperty;

  public MyProps(String neededProperty) {
    this.neededProperty = neededProperty;
  }

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

不可变的@ConfigurationProperties 的相关文章

随机推荐

  • 设置 double 中点后的位数

    在 C double 类型中 如何设置点后的位数 我只需要 4 谢谢 你不能 二进制浮点数 http pobox com skeet csharp floatingpoint html不是那样的 你可以format这样就可以加倍 例如使用
  • Laravel 验证属性“好名字”

    我正在尝试使用 语言 gt 语言 gt validation php 中的验证属性来替换 属性名称 输入名称 以获得正确的读取名称 例如 first name gt 名字 使用起来似乎很简单 但验证器不会显示 好名字 我有这个 attrib
  • Turbo CPP 中的鼠标程序

    我用turbo cpp编写了一个程序 它使用鼠标作为基本的GUI 我还编写了一个函数来确定鼠标是否单击了某个位置显示的某个文本 第一次运行时一切正常 但是当我第二次运行该程序时 出现了问题 即使鼠标刚刚经过一个选项 而不是单击 它也会被选中
  • 连接到 AWS IoT MQTT 主题的客户端数量

    我们开发了一个 iOS 应用程序 并将该应用程序配置为侦听 AWS IoT 上特定 MQTT 主题上发布的所有消息 我想知道的是 有没有办法可以提取正在收听该主题的已连接设备的列表 我检查了cloudWatch日志 但找不到详细信息 例如所
  • Excel VSTO Addin 显示/隐藏任务窗格

    我在这里做教程 空白 Excel 页面一切正常 https msdn microsoft com en us library bb608590 v vs 120 aspx https msdn microsoft com en us lib
  • 如果我们需要更改 input_shape,为什么需要 include_top=False ?

    据我所知 输入元组是从卷积块进入的 因此 如果我们想改变 input tuple 的形状 修改卷积就有意义 为什么我们需要 include top False 并删除最后的全连接层 另一方面 如果我们有不同数量的类 Keras 可以选择使用
  • 如何在 Firebase 中验证转义的基于电子邮件的用户帐户?

    我正在使用 Firebase 简单登录的电子邮件 密码身份验证选项 我使用转义电子邮件作为键来存储用户数据 其中 字符已替换为 因为 Firebase 不允许在键中存储 而不是使用用户 ID 作为键 问题是 在安全规则中 我无法使用正则表达
  • System.NullReferenceException:未将对象引用设置为对象的实例[重复]

    这个问题在这里已经有答案了 可能的重复 NET 中的 NullReferenceException 是什么 https stackoverflow com questions 4660142 what is a nullreferencee
  • C# 桌面应用程序中的会话变量?

    我正在开发一个 C 独立的单用户桌面应用程序 需要用户登录该应用程序 我想确保当 5 分钟左右没有任何活动时 应用程序将提示用户再次登录 我想到了几种解决方案来做到这一点 但似乎效率不高 以前 在进行 Web 编程时 我能够使用会话变量来执
  • 苹果推送通知分发证书签名请求是否需要与分发证书用于签署应用程序的请求相同?

    我有一个已创建的现有应用程序 并且最近配置了推送通知 配置时 系统要求我上传证书签名请求 CSR 我不再拥有用于发布应用程序的原始 CSR 这是我需要上传到推送通知配置才能接收推送通知证书的 CSR 吗 我有带有可用私钥的分发证书 我尝试创
  • Angular 4上的动画似乎没有过渡效果

    trigger expandCollapse state open style height state close style height 0px transition open lt gt close animate 1000 使用此
  • postgres中的SQL将重复事件的日期时间转换为未来的日期时间

    我仅使用日期时间来跟踪表中每周重复发生的事件 我只关心时间和它所在的星期几 我需要能够将设置的 DATETIME 转换为当前或即将到来的未来日期 IE 如何转换存储为的日期2013 02 22 12 00 00使用当前日期到下一次出现的日期
  • 这种不良做法/反模式的名称是什么?

    我试图向我的团队解释为什么这是不好的做法 并且正在寻找反模式参考来帮助我的解释 这是一个非常大的企业应用程序 因此这里有一个简单的示例来说明所实现的内容 public void ControlStuff var listOfThings L
  • 使用 cxf 和 java 第一种方法编写异步服务

    我需要使用 cxf 和 java 第一种方法创建一个异步 Web 服务 但我无法 找到任何可以告诉我如何执行此操作的网络资源 网站吗 您能告诉我如何使用 CXF 和 java 第一种方法编写异步 Web 服务吗 Thanks Shekhar
  • FMDB开放数据库

    我正在尝试打开资源中项目中的数据库 问题是好像找不到数据库文件 我尝试使用完整路径 它有效 但这不是一个好的解决方案 我现在想知道如何打开它 我正在使用这段代码 db FMDatabase databaseWithPath bbdd sql
  • htaccess 从 url 中删除字符并重定向

    我想脱衣 来自网址 例子 mysite com something想要重定向到mysite com something 通过启用 mod rewrite 和 htaccesshttpd conf然后将此代码放入您的 htaccess und
  • Select2:如何防止标签排序

    当用户选择许多项目 标签 时 它们会自动按字母顺序排序 如何使用Select2 4 0防止自动排序并保留用户的顺序 Update 提到的 可能的重复问题 适用于旧版本的 Select2 v3 我询问版本 4 它与旧版本不同 并且提到的答案不
  • flake8 抱怨过滤器子句中的布尔比较“==”

    我在 mysql 数据库表中有一个布尔字段 table model class TestCase Base tablename test cases obsoleted Column obsoleted Boolean 要获取所有未过时测试
  • 本地修改数据的 Firebase 同步:处理错误和全局状态

    我有两个相关问题Firebase 网络平台 https www firebase com docs web s 将本地修改的数据同步到服务器 https www firebase com docs web guide offline cap
  • 不可变的@ConfigurationProperties

    Spring Boot 是否可以拥有不可变 最终 字段 ConfigurationProperties注解 下面的例子 ConfigurationProperties prefix example public final class My