在Spring中什么时候应该使用@Component?

时间:2019-04-22 14:38:27

标签: java spring architecture

从软件设计的角度来看,什么时候应该使用@Component而不是传统的Java类(需要通过“ new”显式实例化)?例如,如果我们需要创建以下模式之一的类:

  • 适配器

  • 门面

  • 策略

  • 翻译器

该类是否应具有@Component注释(或任何@Repository / @Controller / @Service之类的Spring衍生注释)?

1 个答案:

答案 0 :(得分:4)

Spring应用了“控制反转”原理,该原理深入到框架可以为您处理的事情,因此您不必担心。

通过在类上使用@Component,Spring可以为您创建一个bean。 这样,Spring可以例如在需要时在运行时注入此bean。 (例如,通过自动装配构造函数)。

由您决定是否要为您的班级使用此功能。例如,外观非常可能是Spring组件,通过这种方式,您可以注入在运行时通过外观公开的API实现,而无需考虑依赖项注入实现。
例如,我不建议在DTO或模型类上使用此批注。这些类主要由数据组成,不适合由Spring管理。

可以帮助您决定何时创建组件的其他有趣的相关问题:
What's the difference between @Component, @Repository & @Service annotations in Spring?

Spring: @Component versus @Bean