メインコンテンツへスキップ
Wyrly の core model は小さく保たれています。ほとんどの application で必要なのは、tokens、 providers、containers、scopes、lifetimes の 5 つです。

Tokens

トークンは TypeScript の型を持つ実行時のキーです。
インターフェースや抽象的な機能にはトークンを使います。クラス自体が依存のキーになる場合は、クラスのコンストラクタを直接登録することもできます。

Providers

プロバイダーは、依存関係をどのように作成または返すかをコンテナに伝えます。 Wyrly は以下に対応しています。
  • クラスで実装された依存関係向けの useClass
  • 定数やテストダブル向けの useValue
  • カスタム生成が必要な依存関係向けの useFactory
  • エイリアス向けの useExisting

Containers

ルートコンテナはアプリケーション全体の登録を管理します。
ルートコンテナは composition root として扱います。ドメインや use case のコードの中ではなく、そこに具体的なインフラ実装を登録してください。

Scopes

スコープは子の依存解決コンテキストです。Web アプリでは、アダプターが通常 1 リクエストにつき 1 スコープを作ります。
スコープ付きの依存関係は同じスコープ内で再利用され、スコープが破棄されると一緒に破棄されます。

Lifetimes

依存関係の状態とリソースの所有権に合う、最も狭いライフタイムを選んでください。

Validation

本番環境に出す前に依存グラフの問題を検出するには、container.validate() を使います。
  • プロバイダーの不足
  • 循環依存
  • 不正なプロバイダー定義
  • ライフタイム違反
検証は依存の組み立てを検査可能な成果物にできるため、CI で特に有用です。