Kotlin-allopen dan Spring

1. Gambaran keseluruhan

Di Kotlin , semua kelas adalah muktamad secara muktamad yang, di luar kelebihan jelasnya, boleh menjadi masalah dalam aplikasi Spring. Ringkasnya, beberapa kawasan di Spring hanya berfungsi dengan kelas bukan akhir.

Penyelesaian semula jadi adalah membuka kelas Kotlin secara manual menggunakan kata kunci terbuka atau menggunakan plugin kotlin-allopen - yang secara automatik membuka semua kelas yang diperlukan agar Spring berfungsi.

2. Pergantungan Maven

Mari mulakan dengan menambahkan pergantungan Kotlin-Allopen:

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

Untuk mengaktifkan pemalam, kita perlu mengkonfigurasi kotlin-allopen di bahagian binaan:

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

3. Persediaan

Sekarang mari kita mempertimbangkan SimpleConfiguration.kt , kelas konfigurasi mudah:

@Configuration class SimpleConfiguration { }

4. Tanpa Kotlin-Allopen

Sekiranya kami membina projek kami tanpa pemalam, kami akan mendapat mesej ralat berikut:

org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: @Configuration class 'SimpleConfiguration' may not be final. Remove the final modifier to continue.

Satu-satunya cara untuk menyelesaikannya adalah dengan membukanya secara manual:

@Configuration open class SimpleConfiguration { }

5. Termasuk Kotlin-Allopen

Membuka semua kelas untuk Spring tidak begitu berguna. Sekiranya kita menggunakan plugin, semua kelas yang diperlukan akan dibuka.

Kita dapat melihat dengan jelas bahawa jika kita melihat kelas yang disusun:

@Configuration public open class SimpleConfiguration public constructor() { }

6. Kesimpulannya

Dalam artikel ringkas ini, kita telah melihat bagaimana menyelesaikan masalah "kelas mungkin tidak muktamad" di Spring dan Kotlin.

Kod sumber untuk artikel ini boleh didapati di GitHub.