Kotlin-allopen en Spring

1. Overzicht

In Kotlin, zijn alle klassen standaard definitief wat, afgezien van de duidelijke voordelen, problematisch kan zijn in lentetoepassingen. Simpel gezegd, sommige gebieden in het voorjaar werken alleen met niet-laatste lessen.

De natuurlijke oplossing is om handmatig Kotlin-klassen te openen met de Open trefwoord of om het kotlin-allopen plug-in - die automatisch alle klassen opent die nodig zijn om Spring te laten werken.

2. Maven afhankelijkheden

Laten we beginnen met het toevoegen van de Kotlin-Allopen-afhankelijkheid:

 org.jetbrains.kotlin kotlin-maven-allopen 1.1.4-3 

Om de plug-in in te schakelen, moeten we het kotlin-allopen in de build-sectie:

 ... ... kotlin-maven-plugin org.jetbrains.kotlin 1.1.4-3 spring 1.8 compileren compileren test-compileren test-compileren test-compileren org.jetbrains.kotlin kotlin-maven-allopen 1.1.4-3 

3. Installatie

Laten we nu eens kijken SimpleConfiguration.kt, een eenvoudige configuratieklasse:

@Configuration class SimpleConfiguration {}

4. Zonder Kotlin-Allopen

Als we ons project bouwen zonder de plug-in, zien we de volgende foutmelding:

org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuratieprobleem: @Configuration class 'SimpleConfiguration' is mogelijk niet definitief. Verwijder de laatste wijziging om door te gaan.

De enige manier om het op te lossen, is door het handmatig te openen:

@Configuration open class SimpleConfiguration {}

5. Inclusief Kotlin-Allopen

Alle lessen openen voor de lente is niet erg handig. Als we de plug-in gebruiken, zijn alle benodigde klassen open.

We kunnen duidelijk zien dat als we naar de gecompileerde klasse kijken:

@Configuration openbare open klasse SimpleConfiguration openbare constructor () {}

6. Conclusie

In dit korte artikel hebben we gezien hoe we het probleem "klasse is misschien niet definitief" in Spring en Kotlin kunnen oplossen.

De broncode voor dit artikel is te vinden op GitHub.