如何将@ConfigurationProperties与记录一起使用?

Java 16 引入了Records,这有助于在编写携带不可变数据的类时减少样板代码。当我尝试@ConfigurationProperties如下使用 Record as bean 时,我收到以下错误消息:

@ConfigurationProperties("demo")
public record MyConfigurationProperties(
        String myProperty
) {
}
***************************
APPLICATION FAILED TO START
***************************

Description:

Parameter 0 of constructor in com.example.demo.MyConfigurationProperties required a bean of type 'java.lang.String' that could not be found.

如何使用 Records as @ConfigurationProperties

回答

回答我自己的问题。

由于缺少无参数构造函数,Spring Boot 无法构造 bean,从而引发上述错误。记录隐式地为每个成员声明了一个带有参数的构造函数。

Spring Boot 允许我们使用@ConstructorBinding注释通过构造函数而不是 setter 方法启用属性绑定(如文档和此问题的答案中所述)。这也适用于记录,所以这有效:

@ConfigurationProperties("demo")
@ConstructorBinding
public record MyConfigurationProperties(
        String myProperty
) {
}

  • 我收到一个错误,说它是最终的,当我完全使用这种方法时它不应该是最终的。可能是什么问题呢?

以上是如何将@ConfigurationProperties与记录一起使用?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>