- 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 §
- https://spring.io/guides/tutorials/spring-boot-kotlin