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

cal*_*i77 5 java architecture spring

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

  • 适配器

  • 正面

  • 战略

  • 译者

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

小智 5

Spring 应用了控制反转原则,该原则深入到框架为您处理内容,因此您不必担心它。

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

您可以决定是否要在您的班级中使用此功能。例如,Facade 很可能是一个 Spring 组件,这样您就可以注入一个在运行时通过 Facade 公开的 API 实现,而无需考虑依赖注入实现。
例如,我不建议在 DTO 或模型类上使用此注释。这些类主要由数据组成,不适合Spring管理的需要。

其他有趣的相关问题可以帮助您决定何时创建组件:
Spring 中的 @Component、@Repository 和 @Service 注释之间有什么区别?

Spring:@Component 与 @Bean