8.2.6. Bean ライフサイクル

8.2.6.1. Bean のライフスタイルの管理

タスクの概要

このタスクは、要求の残存期間の間 Bean を保存する方法を示しています。他の複数のスコープが存在し、独自のスコープを定義できます。

挿入された Bean のデフォルトのスコープは @Dependent です。つまり、Bean のライフスタイルは、参照を保持する Bean のライフスタイルに依存します。詳細については、「コンテキストおよびスコープ」 を参照してください。
  1. 必要なスコープに対応するスコープで Bean をアノテートします。

    @RequestScoped
    @Named("greeter")
    public class GreeterBean {
      private Welcome welcome;
      private String city; // getter & setter not shown
      @Inject   void init(Welcome welcome) {
        this.welcome = welcome;
      }
      public void welcomeVisitors() {
        System.out.println(welcome.buildPhrase(city));
      }
    }
    
  2. Bean が JSF ビューで使用される場合、Bean はステートを保持します。

    <h:form>
      <h:inputText value="#{greeter.city}"/>
      <h:commandButton value="Welcome visitors" action="#{greeter.welcomeVisitors}"/>
    </h:form>
結果:

Bean は、指定するスコープに関連するコンテキストに保存され、スコープが適用される限り存続します。