ときどき、boot.scala または Boot.scala ファイルを含むプロジェクトを見かけます。これは厳格で迅速な Scala ルールではないように見えますが、Boot.scala ファイルを含めることは一種の民間伝承のようです。いくつかのプロジェクト。この特定のプロジェクトでは、アクター パターンと REST サービスに変換される Akka と Spray を使用します。
そのようなファイルで通常期待できる機能の種類と、これが一般的なパターンであるかどうかを誰かが説明してくれますか?
この質問の延長として (最初の部分に最初に答えてください :-)、複数の Boot.scala ファイルを含むプロジェクトにあるこのコードの読み方を教えていただければ幸いです。
Web パッケージの Boot.scala:
trait Web {
this: Api with Core =>
....
}
API パッケージの Boot.scala:
trait Api {
this: Core =>
....
}
コア パッケージの Boot.scala:
trait Core {
implicit def actorSystem: ActorSystem
implicit val timeout = Timeout(30000)
val application = actorSystem.actorOf(
props = Props[ApplicationActor],
name = "application"
)
Await.ready(application ? Start(), timeout.duration)
}
1 つのパッケージが他のパッケージに依存していること、および Boot.scala ファイルがアクター ベースのシステムでよく見られることを収集できますが、関係をどのように「読み取る」のでしょうか? たとえば、trait Web {this: Api with Core =>...} を英語で読むにはどうすればよいでしょうか?
特定の例では、アプリケーションの開始点はメイン ファイルにあります。
object Main extends App {
implicit val system = ActorSystem("RESTService")
class Application(val actorSystem: ActorSystem) extends Core with Api with Web {
}
new Application(system)
sys.addShutdownHook {
system.shutdown()
}
}
私の質問は些細なことに思えるかもしれませんが、私はここで Scala 族に入り込もうとしており、「秘密のパスワード」はどのマニュアルにもありません。