从软件设计的角度来看,我们什么时候应该使用 @Component
而不是传统的 Java 类(需要通过“new”显式实例化)?例如,如果我们需要创建一个具有以下模式之一的类:
适配器
桥梁
外观
策略
翻译
该类是否应该具有@Component
注解(或任何Spring派生注解,例如@Repository
/@Controller
/@服务
)?
最佳答案
Spring 应用了控制反转原则,该原则深入到框架为您处理事情,因此您不必担心。
通过在类上使用@Component,让Spring 为您创建一个bean。 这样,Spring 就可以在您需要时在运行时注入(inject)这个 bean。 (例如通过 Autowiring 你的构造函数)。
是否要为您的类(class)使用此功能由您决定。例如,外观很可能是一个 Spring 组件,这样您就可以在运行时注入(inject)通过外观公开的 API 实现,而无需考虑依赖注入(inject)实现。
例如,我不建议在 DTO 或模型类上使用此注释。这些类主要由数据组成,不适合由 Spring 管理的需要。
其他有趣的相关问题可以帮助您决定何时创建组件:
What's the difference between @Component, @Repository & @Service annotations in Spring?
关于java - 我们什么时候应该在 Spring 中使用@Component?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55796139/