Les plugins
Les plugins Maven pour Spring version Java sont aussi disponibles pour Spring Kotlin. Le plugin all-open a été fait car Spring a besoin de surcharger les méthodes cglib pour ses proxys. Kotlin déclare ses classes et ses méthodes finales par défaut, ce qui ne permet pas à Spring de surcharger. Il faut donc systématiquement déclarer les API des @Bean publiques via l’opérateur open ou utiliser le plugin Kotlin Spring qui le fait alors pour vous.
Il est possible d’utiliser le plugin all-open Maven ou Gradle pour rendre automatiquement open (publique) les classes et les méthodes :
Dans le code suivant, sans le plugin Maven, nous devons mettre open pour spécifier que la classe et la méthode sont publiques car elles sont privées par défaut avec Kotlin, contrairement à ce qui se passe avec Java.
@SprinBootApplication
open class Application {
@Bean
open fun fonction1() = ...
}
avec :
@SprinBootApplication
class Application {
@Bean
fun fonction1() = ...
}
Build Maven
<build>
<sourceDirectory>${project.basedir}/src/main/kotlin</
sourceDirectory>
<testSourceDirectory>${project.basedir}/src/test/kotlin</
testSourceDirectory>
<plugins>
<plugin> ...