I will add another quote from Iuliana Cosmina's book:
"In Spring 4.0, the @RestController annotation was introduced. This annotation is basically a combination of @Controller and @ResponseBody, and when used on a class, it assumes that all values returned by the methods in this controller should be bound to the web response body.
The @RestController annotation is a specialized version of the @Controller that does more than just mark a component as being used for REST requests; thus it is not considered a stereotype annotation, and was declared in a different package: org.springframework.web.bind.annotation."
My understanding is that @RestController is not considered a stereotype annotation because:
1. All the other stereotype annotations (@Controller, @Repository and @Service) are from org.springframework.stereotype package, but @RestController is part of org.springframework.web.bind.annotation
2. All the other stereotype annotations (@Controller, @Repository and @Service) are used to mark classes (from which a bean will be created) according to a specific purpose. @RestController not only marks classes according to a specific purpose, but also assumes that all values returned by methods in a controller should be bound to the web response body. (The DispatcherServlet is notified that the result of the execution of a controller does not have to be mapped to a view by annotating the method with @ResponseBody)
This is my current understanding. If you have found other relevant informations (maybe in Spring documentation), please post it.