作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我必须在我的应用程序中做出设计决策。以下是场景。
我有一组服务类,它们分布在我的应用程序中的不同 Maven 模块中。
public class ServiceA
{
public void startA()
{
....
}
}
public class ServiceB
{
public void startB()
{
....
}
}
我目前有 8 个这样的服务类。将来可能会添加更多。
所有这些服务类的启动都必须在驱动程序中调用。服务的数量可能会随着时间的推移而变化。当它发生变化时,我想避免更新驱动程序。
我曾考虑过让服务实现一个接口(interface)。但是在运行时,服务列表需要可供驱动程序启动它们。
驱动程序是应用程序启动时第一个执行的,预计会启动服务。
请建议如何解决此问题。
最佳答案
您可以扭转局面,让所有服务自行向驱动程序注册。
它们都可以是注入(inject)驱动程序的 spring beans。
如果您不希望服务了解驱动程序,您可以为它们引入一个依赖于服务和驱动程序的中间人,或者您可以通过 @Configuration 类来实现。
更新:
您可以使用 ServiceLoader 类来定位您的服务,看看这个 tutorial 。
这是一个使它更容易使用的库:ServicePluginLoader
关于java - 设计: How to drive a dynamic set of similar classes from a program,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36075940/
我是一名优秀的程序员,十分优秀!