如何对记录使用@configurationproperties?

kupeojn6  于 2021-07-16  发布在  Java
关注(0)|答案(1)|浏览(313)

Java16引入了记录,这有助于在编写携带不可变数据的类时减少样板代码。当我试着用一张唱片 @ConfigurationProperties 如下所示,我得到以下错误消息:

@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.

如何使用记录作为 @ConfigurationProperties ?

7dl7o3gd

7dl7o3gd1#

回答我自己的问题。
上面的错误是由于springboot由于缺少无参数构造函数而无法构造bean引起的。记录隐式声明一个构造函数,每个成员都有一个参数。
Spring Boot允许我们使用 @ConstructorBinding 通过构造函数而不是setter方法启用属性绑定的注解(如文档和对这个问题的回答中所述)。这也适用于记录,所以这适用于:

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

相关问题