Can @Component, @Repository and @Service annotations be used interchangeably in Spring or do they provide any particular functionality besides acting as a notation device?>
In Spring @Component
, @Service
, @Controller
, and @Repository
are Stereotype annotations which are used for:
@Controller:
where your request mapping from presentation page done i.e. Presentation layer won't go to any other file it goes directly to @Controller
class and checks for requested path in @RequestMapping
annotation which written before method calls if necessary.
@Service
: All business logic is here i.e. Data related calculations and all.This annotation of business layer in which our user not directly call persistence method so it will call this method using this annotation. It will request @Repository as per user request
@Repository
: This is Persistence layer(Data Access Layer) of application which used to get data from the database. i.e. all the Database related operations are done by the repository.
@Component
- Annotate your other components (for example REST resource classes) with a component stereotype.
Indicates that an annotated class is a "component". Such classes are considered as candidates for auto-detection when using annotation-based configuration and classpath scanning.
Other class-level annotations may be considered as identifying a component as well, typically a special kind of component: e.g. the @Repository annotation or AspectJ's @Aspect annotation.