5.5. 条件付きインストール


@Install アノテーションは、特定のデプロイメントシナリオでは必要とされるがそれ以外では必要とされないコンポーネントの条件付きインストールを制御します。これは以下の場合に役立ちます。
  • 試験的に基盤となる模擬コンポーネントを作成する
  • 特定のデプロイメントシナリオでコンポーネント実装を変更する、または
  • コンポーネントの依存部分が利用可能な場合に、 そのコンポーネントをインストールする (フレームワークの作成者に便利)。
@Install優先順位依存性 を指定することができます。
コンポーネントの優先順位は、 クラスパスに同じコンポーネント名を持つクラスが複数ある場合にインストールすべきコンポーネントの決定に Seam が使用する番号です。 Seam はより優先順位が高いコンポーネントを選択します。事前定義された優先順位の値があります (昇順)。
  1. BUILT_IN − 最も優先順位が低いコンポーネントは Seam に組み込まれたコンポーネントです。
  2. FRAMEWORK − サードパーティのフレームワークによって定義されたコンポーネントは組み込みコンポーネントより優先させることができますが、 アプリケーションコンポーネントにより優先されます。
  3. APPLICATION − デフォルトの優先順位です。ほとんどのアプリケーションコンポーネントにはこれが適切です。
  4. DEPLOYMENT − デプロイメント固有のアプリケーションコンポーネント用です。
  5. MOCK − テストで使用されるモックオブジェクト用です。
JMS キューと対話する messageSender という名前のコンポーネントがあるとします。
@Name("messageSender") 
public class MessageSender { 

  public void sendMessage() { 
    //do something with JMS 
  } 
}
Copy to Clipboard Toggle word wrap
ユニットテストでは、 有効な JMS キューがないのでこのメソッドをスタブにしたいと思うでしょう。ユニットテストの実行中にクラスパスには存在しているがアプリケーションでは絶対にデプロイされない モック コンポーネントを作成します。
@Name("messageSender") 
@Install(precedence=MOCK) 
public class MockMessageSender extends MessageSender { 
  public void sendMessage() { 
    //do nothing! 
  } 
}
Copy to Clipboard Toggle word wrap
precedence はクラスパスで両方のコンポーネントを発見したときに Seam が使用するバージョンを決定するときに役立ちます。
クラスパスにどのクラスがあるのかを正確に制御できるなら、これはすばらしいことです。 しかし、多くの依存性を持つ再利用可能なフレームワークを記述している場合、 複数の jar 全体に渡りそのフレームワークを分散させたいとは思わないでしょう。 インストール済みの別のコンポーネントやクラスパスにある使用可能なクラスに応じてインストールするコンポーネントを決定する方が好まれるはずです。 @Install アノテーションはこの機能も制御します。Seam は多くの組み込みコンポーネントの条件付きインストールを実現するために内部でこのメカニズムを使用します。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat