On Spring Boot 2.4.3 with Kotlin 1.4.3 the next approach is no longer working (maybe because of a bug):
import org.springframework.boot.autoconfigure.SpringBootApplication import org.springframework.boot.context.properties.EnableConfigurationProperties @SpringBootApplication @EnableConfigurationProperties(TestProperties::class) class Application fun main(args: Array<String>) { runApplication<Application>(*args) }
import org.springframework.boot.context.properties.ConfigurationProperties import org.springframework.boot.context.properties.ConstructorBinding @ConfigurationProperties(prefix = "test") @ConstructorBinding data class TestProperties( val value: String )
The code above starts working after implying one of the next two approaches:
- Add dependency
implementation("org.jetbrains.kotlin:kotlin-reflect")
- Update Properties class
import org.springframework.boot.context.properties.ConfigurationProperties import org.springframework.boot.context.properties.ConstructorBinding @ConfigurationProperties(prefix = "test") data class TestProperties @ConstructorBinding constructor( val value: String )
The problem happens at the line org/springframework/boot/context/properties/ConfigurationPropertiesBindConstructorProvider.java#68
ConfigurationPropertiesis for typesafe configuration, it's not adataclass.@ConfigurationProperties.