Pseudo scopes result in beans that do not have a client proxy created by Weld, but instead a new instance is created each time and the client holds a direct reference to it. @Dependent
is a scope annotation that is a pseudo scope type, and @Dependent
is also the default scope for any beans that do not explicitly declare a scope.
Beans with a scope of @Dependent
are never shared; it is a dependent object of whichever object it was injected into. This means that the @Dependent
bean is created at the point when the object it belongs to is created, and is destroyed when the object it belongs to is destroyed.
Tip
Accessing a @Dependent
bean by its EL name will cause a new instance of that bean to be created every time the expression is evaluated, which can be several times when using JSF. For this reason, it is not recommended to use @Dependent
beans in EL expressions as it is likely that the desired behavior will not be achieved; instead, add the @Dependent
bean to a normal scope...