Skip to content

Allow @ConfigurationProperties binding for immutable POJOs #8762

@sdeleuze

Description

@sdeleuze

Currently, it seems we are forced to use Kotlin classes with mutable nullable properties and default constructor with @ConfigurationProperties while idiomatic Kotlin code would be using classes with immutable properties initialized via constructor. I think there is a way to supporting that by leveraging kotlin-reflect library like jackson-module-kotlin do.

More concretely, in MiXiT app I would like to be able to convert this MixitProperties class implementation to:

@ConfigurationProperties("mixit") class MixitProperties( val baseUri: String, val admin: Credential, val drive: Drive ) class Credential( val username: String, val password: String ) class Drive( val fr: DriveDocuments, val en: DriveDocuments ) class DriveDocuments( val sponsorform: String, val sponsor: String, val speaker: String, val press: String ) 

We could imagine to support optional properties by using nullable types, like val sponsorform: String? for example.

I will be happy to help. I have also already worked with @apatrida who maintains Jackson Kotlin module, he may provide us some guidance I think.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions