【问题标题】:When should we use @Component in Spring?我们什么时候应该在 Spring 中使用 @Component?
【发布时间】:2019-04-23 08:57:39
【问题描述】:

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

  • 适配器

  • 立面

  • 策略

  • 译者

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

【问题讨论】:

  • 当某个其他类依赖于标记的类时,将一个类标记为@Component(或派生类)。它允许 Spring 连接依赖项。
  • 当你希望它是一个 Spring bean 时应该注解,这样它就可以被注入到其他 Spring bean 中,并且有其他 Spring bean 注入它。该类是适配器还是桥接器或其他任何东西都无关紧要。

标签: java spring architecture


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2011-11-25
    • 2021-09-07
    • 1970-01-01
    • 2011-07-04
    • 2017-09-13
    • 2021-12-29
    • 2011-07-17
    • 2022-01-26
    相关资源
    最近更新 更多