• 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