In this tutorial, we are going to learn about stereotype annotations in the spring framework.

@Component, @Service, @Repository, @Controller  are considered to be the stereotype annotations in spring.

You can also find the advantages of the Spring framework along with this tutorial so that you can have a better understanding of the spring framework.

Here is the list of spring core stereotype annotations:

Stereotype annotations in Spring:

Stereotype annotations were introduced in the spring 2.0 with a single type called @Repository. In Spring 2.5 spring introduced a generic stereotype annotation called @Component, this is an extension of spring 2.0 stereotype annotations with different component types.

As we all know that, a component is a generic term. We can term anything as a component. So that the spring also followed the same rule, that’s why the @Component annotation is defined as a generic/super. The @Service, @Repository, @Controller are the annotation are the sub/concrete types of @Component.

Spring @Component @Service @Repository

Spring core annotation @Component

@Component is a generic stereotype annotation, it can be used on top of a class. If we declare a @Component on top of a class, then that class will be automatically configured by the Spring IOC container, with the unqualified class name as id like below.

Example:

package com.onlinetutorialspoint.beans;

import org.springframework.stereotype.Component;

@Component
public class DemoBean {

}

Spring IOC container will automatically configure the above DemoBean class with id demoBean.

In order to tell the spring container that scan for the components (beans) in a package or its sub-packages, we have to configure the component scan in spring configuration XML like below.

<context:component-scan base-package="com.onlinetutorialspoint.beans" />

We can also define the multiple base packages in component-scan like below:

<context:component-scan base-package="com.onlinetutorialspoint.beans, com.onlinetutorialspoint.controllers" />

In order to tell the Spring IOC container to process the annotations, we need to configure the information in the spring configuration file like below.

<context:annotation-config />

Spring Core annotation @Service :

@Service is a sub-annotation of the @Component annotation. We can define the @Service annotation on top of a class. In order to indicate a class that comes under the business layer, we can define those classes with @Service annotation.

package com.onlinetutorialspoint.beans;

import org.springframework.stereotype.Service;

@Service
public class ProductService {

}

If we declare @Service annotation on top of a class, then it will automatically be configured by IOC container, because @Service annotation is a sub-annotation of @Component annotation.

Spring Core annotation @Repository :

We can define the @Repository annotation on top of a class. In order to indicate a class that comes under the persistent layer, we can define those classes with @Repository annotation. @Repository is a sub-annotation of the @Component.

package com.onlinetutorialspoint.beans;

import org.springframework.stereotype.Repository;

@Repository
public class ProductDAOImpl {

}

Spring Core annotation @Controller :

We can define the @Controller annotation on top of a class. In order to indicate a class that comes under the presentation layer, we can define those class with @Controller annotation.

package com.onlinetutorialspoint.controllers;

import org.springframework.stereotype.Controller;

@Controller
public class ProductController {

}

@Controller is a sub-annotation of the @Component annotation, hence it will automatically configure by the Spring IOC container.

References:

Happy Learning 🙂