我的应用程序中的一些软件组件需要启动和关闭活动。
问题 1:在 Scala 中启动和停止此类“服务”的最佳实践是什么?
我在我的应用程序中使用依赖注入 (DI),我目前的理解是 DI声明了软件组件之间的依赖关系,但应该没有副作用(即,DI 机制不应该自行启动/停止服务)。所以 DI 与服务激活正交。
但是,似乎存在重叠:假设我的应用程序包含 a NotificationService
,而后者又使用 a SchedulingService
。所以我将调度服务实现注入到我的通知服务实现中,并手动启动和停止这些服务。但是,DI 框架手头有所有信息,可以知道哪些服务需要实例化(因此启动/停止)以及哪些取决于哪些服务(以及因此需要启动/停止服务的顺序)。因此,它可以提供启动/停止它们的方法,为我节省了一些样板代码!
问题2:他们是否尝试过扩展DI(例如Guice)来记录注入的服务并提供启动/停止它们的方法?