我知道@Service
用于将类标记为业务逻辑类。为什么春天有用?我已经可以使用@Component
将类标记为bean。我了解@Service
比@Component
更具体,但是如何?
答案 0 :(得分:12)
将@Component
注释视为 Swiss Knife 。它可以作为切割刀,开瓶器,剪刀等。
同样,您的Component可以充当存储库,Business Logic类或控制器。
现在,@Service
只是@Component
的一个版本,比如说刀。
Spring过程@Service
与@Component
类似,因为@Service
接口本身已使用@Component
注释。
来自Spring docs:
@Target(value=TYPE) @Retention(value=RUNTIME) @Documented @Component public @interface Service
表示带注释的类是“服务”(例如,业务) 服务门面)。
为什么要区分它们?
要应用编程的基本规则:您的代码应易于阅读。
是的,您可以在任何地方使用@Component
注释,它可以正常工作,但为了更好地理解代码,我们最好在我们的案例中使用相应的特殊类型的注释,如@Service
。
另一个好处是易于调试。一旦你知道错误,就不必希望从一个组件类到另一个组件类,检查该类是服务,存储库还是控制器。
答案 1 :(得分:11)
@ Service,@ Controller,@ Repository = {@Component +一些更特殊的功能}
点击以下链接了解更多详情
What's the difference between @Component, @Repository & @Service annotations in Spring?
@Component注释将java类标记为bean,所以 弹簧的元件扫描机构可以将其拾起并拉入其中 应用程序上下文。 @Service注释也是一个 组件注释的特化。它目前没有 提供@Component注释的任何其他行为,但是 在服务层中使用@Service而不是@Component是个好主意 类因为它更好地指定了intent。此外,工具支持 其他行为可能会在将来依赖它。
答案 2 :(得分:3)
@Service注释是组件注释的特化。它目前不提供@Component注释的任何其他行为,但在服务层类中使用@Service而不是@Component是一个好主意,因为它更好地指定了intent。此外,工具支持和其他行为可能在将来依赖它。