为了“配置”Spring,以便它可以为您提供所需的类的实例,您应该告诉Spring涉及哪些对象以及它们是如何构建的。为此,您可以使用 xml 配置文件或通过注释
如果您采用注释方法(恕我直言,这是一种更好,更简单的方法),则可以使用该方法对类进行注释。这就像告诉春天:“嘿!我想让你知道你可能需要这个类的一个实例。也许是因为我要求它,也许是因为我要求的东西需要它”。因此,注释一个类只是让Spring知道它的存在@Component
@Component
还有其他注释可以执行相同的操作:
-
@Controller
(和@RestController
)
@Service
@Repository
他们都告诉Spring,该课程涉及DI上下文。但它们也有语义意义:
-
@Controller
= @Component
属于表示层
-
@Service
= @Component
属于服务/用例层
-
@Repository
= @Component
属于持久层
您可以在此问题中找到更多信息
一个服务应该能够调用其他服务吗?
我不认为这有什么问题。如果您的任何服务需要执行其他服务已经执行的某些操作,您肯定希望避免代码重复。只要你尊重架构层的依赖性(永远不会上升),你就会没事的。
关于这一点,你可以查看这篇关于清洁建筑的文章