Welcome

Kotlin ve Spring

Kotlin deneyimlerimi paylaşmaya devam ediyorum. Bu yazımızda da Kotlin ile kurumsal yazılım geliştirirken Spring Framework’ün kullanımından bahsedeceğim.

Geçen yazımda da belirttiğim gibi Kotlin’in JVM uyumlu bir dil olması sayesinde mevcut Java kütüphanelerini Kotlin projelerimizde de kullanabiliyoruz. Ancak Hibernate örneğinde olduğu gibi Spring ve Spring Boot Framework açısından da, Kotlin’in varyasılan durumda sınıfları ve metotları final olarak işaretlemesi temel bir sorun teşkil ediyor.

Çünkü Spring Framework transaction yönetiminden, caching’e, scope’lardan, aspect oriented programlamaya pek çok altyapısal kabiliyetini “proxy örüntüsü” üzerine bina etmiştir. Dolayısı ile Spring ile çalışırken, Spring managed bean sınıflar üzerinde her ne zaman bu tür altyapısal kabiliyetlerden birisini kullanacağımız durumda, ki buna hemen her zaman diyebiliriz, bu sınıfları ve metotların “open” olarak işaretlemek zorundayız. Aksi takdirde Hibernate’den farklı olarak daha bootstrap aşamasında Spring ApplicationContext’i oluştururken dahi hata ile karşılaşma ihtimalimiz büyük.

JetBrains ekibinin geliştirdiği “allopen” plugin’ini kullanarak Spring’in @Service, @Component, @Repository, @Controller, @Configuration gibi anotasyonlarına sahip sınıfların open yapılmasını sağlayabiliriz.

Ya da yine JetBrains ekibinin, Hibernate için olduğu gibi Spring kullanacak yazılım geliştiricilerin de işini kolaylaştırmak için geliştirdiği “kotlin-spring” compiler plugin’ini kullanabiliriz.

“kotlin-spring” plugin’i sayesinde Spring anotasyonlarından herhangi birisini build script’imizde tanımlamamıza gerek kalmadan çalışabiliriz.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.