Mastering JavaServer Faces 2.2
上QQ阅读APP看书,第一时间看更新

Dependent pseudo-scope

This is the default scope of a CDI bean (@Named) when nothing is specified. In this case, an object exists to serve exactly one bean and has the same life cycle as that bean; an instance of a dependent scoped bean is not shared between different users or different points of injection. It can also be explicitly specified by annotating the bean with the @Dependent annotation and importing javax.enterprise.context.Dependent. This scope is available only in CDI and is the only non-contextual scope.

Note

All CDI scopes, except this one, are known as normal scopes. More details about normal scopes versus pseudo-scopes can be found in the Normal scopes and pseudo-scopes section at http://docs.jboss.org/cdi/spec/1.0/html/contexts.html.

If you put the PlayersBean in the dependent scope, then the current extracted player and the list of randomly extracted players (which will be empty or will contain this player) is available only inside the bean, as shown in the following code:

import javax.enterprise.context.Dependent;
import javax.inject.Named;

@Named
@Dependent
public class PlayersBean {
  ...
}

Note

A method annotated with @PostConstruct will be called for each request. Actually, it might be called multiple times during the same request, if the bean is used in several EL expressions. Initially, there is one instance of the bean, and this instance is reused if the bean EL name appears multiple times in the EL expression, but is not reused in the case of another EL expression or in the case of a re-evaluation of the same EL expression.

This example is wrapped into the application named ch3_5 that is available in the code bundle of this chapter.