実行時に特性を使用してルートを集約しようとしていますが、これまでのところ
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
ですか?