セットアップを行うBootメソッドを含むBoot.scalaがあります。最後に、LiftRules.statelessDispatchTableを呼び出し、serveブロックを持つRestHelperを拡張するクラスの新しいインスタンスを追加します。
ある時点で、シグナルを受け取り、このクラスを変更する必要があるため、statelessDispatchTableをもう一度呼び出して、元のクラスを削除し、新しいクラスを追加する必要があります。
これを行うための良い方法は何ですか?
ありがとう!
編集:私はDAVID POLLAKから得た答えで質問を更新するつもりです:
できません。アプリが起動すると、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)