title: Spring has @Component annotation, what is the real purpose of the annotations @Repository, @Service, @Controller?
body: <p>I've developed web applications for a few years with Spring framework. Recently, a fresher of my team asked me a question, Spring has <code>@Component</code> annotation, what is the real purpose of the annotations <code>@Repository</code>, <code>@Service</code>, <code>@Controller</code>? I tried to give him the answer that there is no difference among them, only for identifying types of java Bean. As you know, my explanation lacks of persuasion, he didn't buy it. </p>
  
  <p>So I want to ask a question, what is the real purpose of the annotations <code>@Repository</code>, <code>@Service</code>, <code>@Controller</code>? what the real difference among these annotations?</p>