我有我的 Boot.scala 和引导方法,我在其中进行设置。最后,我调用 LiftRules.statelessDispatchTable 并附加我的类的一个新实例,该实例扩展了具有服务块的 RestHelper。
在某些时候,我收到一个信号并需要更改此类,因此我需要再次调用 statelessDispatchTable 以删除原始的并添加一个新的。
有什么好方法可以做到这一点?
谢谢!
编辑:我将用我从大卫·波拉克那里得到的答案来更新这个问题:
你不能。一旦您的应用程序启动,就无法更改 LiftRules。
但是,您要添加到 statelessDispatchTable 的东西是 PartialFunction[Req, Box[LiftResponse]] 因此您可以编写如下所示的 PartialFunction:
object RestThing1 extends RestHelper { .... }
object RestThing2 extends RestHelper {....}
object MyDynamicRestThing extends PartialFunction[Req, Box[LiftResponse]] {
def isDefinedAt(in: Req): Boolean = if (testCondition) RestThing1.isDefinedAt(in) else RestThing2.isDefinedAt(in)
def apply(in: Req): Box[LiftRequest] = if (testCondition) RestThing1.apply(in) else RestThing2.apply(in)
}
LiftRules.statelessDispatchTable.append(MyDynamicRestThing)