When should I use @Component instead of @Service?

Rhuan Karlus :

I've already read about each Spring annotation in What's the difference between @Component, @Repository & @Service annotations in Spring?

I know that @Component and @Service do almost the same inside the Spring Framework. The difference it's bounded to it's usage, so I just use @Service into the service layer where I access my repositories.

I want to know what's the better way to choose @Component instead of @Service. Note that I'm using @Component now for a factory I've created, because the factory don't need to deal with repositories.

Makoto :

Keep in mind that these are Spring stereotypes, and should be applied as stereotypes or assumptions around one's code are usually applied.

  • If your component is a generic component, not really living at the service layer, or is accessible but could hold state, then use @Component.
  • If your component is a specific service, living at the service layer, or is accessible and does not inherently hold state, use @Service.

Spring sees both of these ultimately as @Components.

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=468532&siteId=1