什么时候应该使用@Component 而不是@Service?

When should I use @Component instead of @Service?

我已经阅读了 What's the difference between @Component, @Repository & @Service annotations in Spring?

中的每个 Spring 注释

我知道 @Component@Service 在 Spring 框架内的作用几乎相同。它的区别在于它的用法,所以我只是将 @Service 用于 服务层 ,在那里我访问我的 存储库 .

我想知道选择 @Component 而不是 @Service 的更好方法是什么。请注意,我现在对我创建的工厂使用 @Component,因为工厂不需要处理存储库。

请记住,这些是 Spring 刻板印象,应该作为刻板印象或围绕一个人的代码的假设来应用。

  • 如果您的组件是通用组件,并非真正位于服务层,或者可访问但可以保持状态,那么使用@Component.
  • 如果您的组件是特定服务,位于服务层,或者可访问并且不是固有地保持状态,请使用@Service

Spring 将这两者最终视为 @Component