Spring Boot 2.4.0 added custom property name support for constructor binding on configuration property classes. The release notes mention a Java example. I guess it should also work for Kotlin data classes.
Java:
@ConfigurationProperties("application")
@ConstructorBinding
public class MyConfig {
private final String importValue;
public MyConfig(@Name("import") final String importValue) {
this.importValue = importValue;
}
public String getImport() {
return importValue;
}
}
Kotlin:
@ConfigurationProperties("application")
@ConstructorBinding
data class MyConfig(@Name("import") val importValue: String)
application.yml:
application:
import: any
The test is successful for Java but fails for Kotlin. Here is a minimal example.