anchor.diff:  annotations are meta-annotated with `@Component`.
   
   http://start.spring.io/#!language=kotlin[start.spring.io] enables it by default.
  +
  +=== Using immutable class instances for persistence
  +
  +In Kotlin, it is very convenient and a best practice to declare read-only properties within
  +the primary constructor, as in the following example:
  +
  +[source,kotlin]
  +----
  +class Person(val name: String, val age: Int)
  +----
  +
  +But some persistence technologies like JPA require a default constructor, preventing this
  +kind of design. Fortunately, there is now a workaround for this
  +https://stackoverflow.com/questions/32038177/kotlin-with-jpa-default-constructor-hell["default constructor hell"]
  +since Kotlin provides a https://kotlinlang.org/docs/reference/compiler-plugins.html#kotlin-jpa-compiler-plugin[kotlin-jpa]
  +plugin which generates synthetic no-arg constructor for classes annotated with JPA annotations.
  +
  +If you need to leverage this kind of mechanism for other persistence technologies, you can
  +configure https://kotlinlang.org/docs/reference/compiler-plugins.html#how-to-use-no-arg-plugin[kotlin-noarg]
  +plugin.
  +
  +[NOTE]
  +====
  +As of Kay release train, Spring Data supports Kotlin immutable class instances and should
  +not require `kotlin-noarg` plugin if the underlying persistence solution allows it
  +(for example with MongoDB).
  +====
   
   === Injecting dependencies
   
  
positive.code: 
  Fortunately, Kotlin 1.0.6+ now provides a
  https://kotlinlang.org/docs/reference/compiler-plugins.html#kotlin-spring-compiler-plugin[`kotlin-spring`]
  plugin that automatically opens classes and their member functions for types
  annotated or meta-annotated with one of the following annotations:
  
  * `@Component`
  * `@Async`
  
negative.code: long-lived connections, streaming scenarios or simply if one wants to use the web functional
  Kotlin DSL.
  
  For other use cases, especially if you are using blocking technologies like JPA, Spring
  MVC and its annotation-based programming model is a perfectly valid and fully supported choice.
  
  [[resources-started]]
  == Resources
  