• The default qualifier for classes and member functions isĀ finalĀ in Kotlin unlike Java (where default isĀ open)
  • This means that by default classes and their members are not open for inheritance or overriding
  • However frameworks like Spring requires classes to be open for certain functionalities like Spring AOP
  • While one can add the open qualifier before each and every single class and method that is annotated with one of the Spring annotations, the ā€œkotlin-springā€ plugin automatically opens classes and methods annotated or meta-annotated with Spring annotations.

Refs

  1. https://spring.io/guides/tutorials/spring-boot-kotlin