Spring Boot @Service Annotation with Example (original) (raw)

Last Updated : 23 Jul, 2025

Spring is one of the most popular frameworks for building enterprise-level Java applications. It is an open-source, lightweight framework that simplifies the development of robust, scalable, and maintainable applications. Spring provides various features such as Dependency Injection (DI), Aspect-Oriented Programming (AOP), and support for Plain Old Java Objects (POJOs), making it a preferred choice for Java developers.

In this article, we will focus on the ****@Service annotation in Spring Boot** and how to use it with a practical example.

@Service Annotation in Spring Boot

The @Service annotation is used to indicate that a class belongs to the service layer in an application. The service layer typically contains the business logic of the application. The @Service annotation is a specialization of the @Component annotation, meaning that classes annotated with @Service are automatically detected during classpath scanning.

**Key Points about @Service annotation:

Steps to Use the @Service Annotation

Let's consider a simple example to understand how to use the @Service annotation in a Spring Boot application.

**Procedure:

  1. Create a Simple Spring Boot Project
  2. Add the spring-context dependency in your pom.xml file.
  3. Create one package and name the package “service”.
  4. Test the spring repository

Step 1: Create a Spring Boot Project

Refer to this article Create and Setup Spring Boot Project in Eclipse IDE and create a simple spring boot project.

Step 2: Add Spring Context Dependency

Add the spring-context dependency in your pom.xml file. Go to the pom.xml file inside your project and add the following spring-context dependency.

org.springframework

spring-context

<!- Use the latest version compatible with your Spring Boot version ->

5.3.13

Step 3: Create a service Package

Create a package named service. This package will contain your service classes. This is going to be our final project structure.

Step 4: Create a MyService Class

Inside the service package, create a class named MyService and annotate it with @Service. This class will contain the business logic.

MyServiceClass:

Java `

// Java Program to Illustrate MyServiceClass

// Importing package module to code module package com.example.demo.service; // Importing required classes import org.springframework.stereotype.Service;

// Annotation @Service

// Class public class MyServiceClass {

// Method
// To compute factorial
public int factorial(int n)
{
    // Base case
    if (n == 0)
        return 1;

    return n * factorial(n - 1);
}

}

`

In this code notice that it’s a simple java class that provides functionalities to calculate the factorial of a number. So we can call it a service provider. We have annotated it with @Service annotation so that spring-context can autodetect it and we can get its instance from the context.

Step 5: Test the Service Class

Now, let’s test the MyServiceClass by retrieving it from the Spring context and invoking its methods.

Java `

// Java Program to Illustrate DemoApplication

// Importing package module to code fragment package com.example.demo; // Importing required classes import com.example.demo.service.MyServiceClass; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.AnnotationConfigApplicationContext;

// Annotation @SpringBootApplication

// Main class public class DemoApplication {

// MAin driver method
public static void main(String[] args)
{

    AnnotationConfigApplicationContext context
        = new AnnotationConfigApplicationContext();
    context.scan("com.example.demo");

    context.refresh();

    MyServiceClass myServiceClass
        = context.getBean(MyServiceClass.class);

    // Testing the factorial method
    int factorialOf5 = myServiceClass.factorial(5);
    System.out.println("Factorial of 5 is: "
                    + factorialOf5);

    // Closing the spring context
    // using close() method
    context.close();
}

}

`

**Output:

**Note: If you are not using the @Service annotation then you are going to encounter the following exception:

Exception in thread “main” org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type ‘com.example.demo.service.MyServiceClass’ available

at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:351)

at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:342)

at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1172)

at com.example.demo.DemoApplication.main(DemoApplication.java:17)