11.2.6. Bean ライフサイクル
11.2.6.1. Bean のライフサイクルを管理する
概要
このタスクは、リクエストの残存期間の間 Bean を保存する方法を示しています。他の複数のスコープが存在し、独自のスコープを定義できます。
インジェクション Bean のデフォルトのスコープは
@Dependent
です。つまり、bean のライフサイクルは、参照を保持する bean のライフサイクルに依存します。詳細は、「コンテキストおよびスコープ」 を参照してください。
手順11.4 Bean ライフサイクルの管理
目的のスコープに対応するスコープで 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)); } }
Bean が JSF ビューで使用されると、Bean は状態を保持します。
<h:form> <h:inputText value="#{greeter.city}"/> <h:commandButton value="Welcome visitors" action="#{greeter.welcomeVisitors}"/> </h:form>
結果:
Bean は、指定するスコープに関連するコンテキストに保存され、スコープが適用される限り存続します。