Member-only story
Spring Boot offers a vast array of features, and often, certain components look similar but function differently. This can lead to confusion, especially for developers new to the framework. In this blog, we will explore some of these lookalike concepts and clarify their distinct roles with detailed examples.
1. @Component
, @Service
, and @Repository
Similarity:
All three annotations are used to define Spring beans and mark classes as eligible for dependency injection.
Differences:
@Component
: A generic stereotype for any Spring-managed component.@Service
: A specialized@Component
, indicating that the class holds business logic.@Repository
: A specialization of@Component
, primarily for DAO (Data Access Object) classes. It also enables exception translation for database access.
Example:
@Component
public class GeneralComponent {
public void doSomething() {
System.out.println("Component logic executed");
}
}
@Service
public class BusinessService {
public String process() {
return "Processing business logic";
}
}
@Repository
public class UserRepository {
public User findById(Long id) {
return new User(id, "John Doe");
}
}