Spring 如何使用kotlin数据类配置多前缀ConfigurationProperties

Spring 如何使用kotlin数据类配置多前缀ConfigurationProperties,spring,spring-boot,kotlin,Spring,Spring Boot,Kotlin,库A中用于配置不可变属性的kotlin数据类(所有属性设置为valnotvar): 自spring boot 2.2.0以来,您可以使用下面的代码配置单个但固定的前缀: @ConstructorBinding @ConfigurationProperties(prefix = "app.cfg") data class Cfg(...) 我的应用程序依赖于库A,但需要配置多个前缀不同的Cfg实例,例如app.cfg1和app.cfg2。这些前缀由应用程序选择。如何声明?您可以声明同一类型的多个

库A中用于配置不可变属性的kotlin数据类(所有属性设置为
val
not
var
):

自spring boot 2.2.0以来,您可以使用下面的代码配置单个但固定的前缀:

@ConstructorBinding
@ConfigurationProperties(prefix = "app.cfg")
data class Cfg(...)

我的应用程序依赖于库A,但需要配置多个前缀不同的
Cfg
实例,例如
app.cfg1
app.cfg2
。这些前缀由应用程序选择。如何声明?

您可以声明同一类型的多个bean,并根据需要为其定义前缀,使用示例中的类可以是:

@配置
类CFG配置{
@豆子
@配置属性(“app.cfg1”)
公共Cfg cfg1(){
返回新的Cfg();
}
@豆子
@配置属性(“app.cfg2”)
公共Cfg cfg2(){
返回新的Cfg();
}
}

您可以根据需要添加任意数量的内容,并且绑定属性将为您提供。

您可以根据需要声明同一类型的多个bean并为其定义前缀,使用示例中的类可以是:

@配置
类CFG配置{
@豆子
@配置属性(“app.cfg1”)
公共Cfg cfg1(){
返回新的Cfg();
}
@豆子
@配置属性(“app.cfg2”)
公共Cfg cfg2(){
返回新的Cfg();
}
}

您可以根据需要添加任意数量的内容,绑定属性将为您提供。

让我看看是否正确,您想让您的应用程序控制外部库中定义的类中
@ConfigurationProperties
的前缀吗?@MarcosBarbero任何将多个
Cfg
实例注册为具有不同前缀的spring bean的方法都是可以接受的。您可以使用不同的命名同时声明多个bean,我会写一个答案,这样你可以得到一些代码格式和东西让我看看我是否得到了正确的答案,您想让您的应用程序控制外部库中定义的类中
@ConfigurationProperties
的前缀吗?@MarcosBarbero任何将多个
Cfg
实例注册为具有不同前缀的spring bean的方法都是可以接受的。您可以使用不同的命名同时声明多个bean,我会写一个答案,这样你可以得到一些代码格式和我知道的东西。但是对于具有不可变属性的kotlin数据类是不可能的,因为没有属性的setter,也没有实例Cfg类的参数构造函数!不幸的是,用这种方式绑定这种类型的classI,您所能做的并不多。但是对于具有不可变属性的kotlin数据类是不可能的,因为没有属性的setter,也没有实例Cfg类的参数构造函数!不幸的是,要绑定这种类型的类,您所能做的不多
@ConstructorBinding
@ConfigurationProperties(prefix = "app.cfg")
data class Cfg(...)