Я пытаюсь агрегировать маршруты, используя трейт во время выполнения, пока у меня есть
object SMController {
def aggregateRoutes(actorSystem: ActorSystem): List[Route] = {
val runtimeMirror = universe.runtimeMirror(getClass.getClassLoader)
val reflections = new Reflections("com.example.api")
val subclasses = reflections.getSubTypesOf(classOf[Routable])
val routesList = new ListBuffer[Route]()
for (i <- subclasses) {
val module = runtimeMirror.staticModule(i.getName)
val obj = runtimeMirror.reflectModule(module)
val someTrait: Routable = obj.instance.asInstanceOf[Routable]
routesList += someTrait.getAllRoutes(actorSystem)
}
routesList.toList
}
}
очевидно, что приведенный выше код не работает, поскольку список элементов не может быть передан в Http().bindAndHandle
.
Итак, мой вопрос: как я могу разобрать List[Routes]
на Http().bindAndHandle
или как я могу динамически загружать маршруты из подклассов Routable
?