从软件设计的角度来看,什么时候应该使用@Component
而不是传统的Java类(需要通过“ new”显式实例化)?例如,如果我们需要创建以下模式之一的类:
适配器
桥
门面
策略
翻译器
该类是否应具有@Component
注释(或任何@Repository
/ @Controller
/ @Service
之类的Spring衍生注释)?
答案 0 :(得分:4)
Spring应用了“控制反转”原理,该原理深入到框架可以为您处理的事情,因此您不必担心。
通过在类上使用@Component,Spring可以为您创建一个bean。 这样,Spring可以例如在需要时在运行时注入此bean。 (例如,通过自动装配构造函数)。
由您决定是否要为您的班级使用此功能。例如,外观非常可能是Spring组件,通过这种方式,您可以注入在运行时通过外观公开的API实现,而无需考虑依赖项注入实现。
例如,我不建议在DTO或模型类上使用此批注。这些类主要由数据组成,不适合由Spring管理。
可以帮助您决定何时创建组件的其他有趣的相关问题:
What's the difference between @Component, @Repository & @Service annotations in Spring?