javax.faces.bean.ManagedBean Maven / Gradle / Ivy
Show all versions of jboss-jsf-api_2.3_spec Show documentation
/*
* Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0, which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* This Source Code may also be made available under the following Secondary
* Licenses when the conditions for such availability set forth in the
* Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
* version 2 with the GNU Classpath Exception, which is available at
* https://www.gnu.org/software/classpath/license.html.
*
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
*/
package javax.faces.bean;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.annotation.Inherited;
/**
* The presence of this annotation on a class
* automatically registers the class with the runtime as a managed bean class.
* Classes must be scanned for the presence of this annotation at application
* startup, before any requests have been serviced.
*
*
*
*
* The value of the {@link #name} attribute is taken to be the
* managed-bean-name. If the value of the name
* attribute is unspecified or is the empty String
, the
* managed-bean-name is derived from taking the unqualified class name
* portion of the fully qualified class name and converting the first character
* to lower case. For example, if the ManagedBean
annotation is on
* a class with the fully qualified class name com.foo.Bean
, and
* there is no
* name attribute on the annotation, the
* managed-bean-name is taken to be bean
. The fully
* qualified class name of the class to which this annotation is attached is
* taken to be the managed-bean-class.
*
*
* The scope of the managed bean is declared using one of {@link
* NoneScoped}, {@link RequestScoped}, {@link ViewScoped}, {@link
* SessionScoped}, {@link ApplicationScoped}, or {@link CustomScoped}
* annotations. If the scope annotations are omitted, the bean must be handled
* as if the {@link RequestScoped} annotation is present.
*
*
* If the value of the {@link #eager} attribute is true
, and the
* managed-bean-scope
value is "application", the runtime must
* instantiate this class when the application starts. This instantiation and
* storing of the instance must happen before any requests are serviced. If
* eager is unspecified or false
, or the
* managed-bean-scope
is something other than "application", the
* default "lazy" instantiation and scoped storage of the managed bean
* happens.
*
*
* When the runtime processes this annotation, if a managed bean exists whose
* name is equal to the derived managed-bean-name, a
* FacesException
must be thrown and the application must not be
* placed in service.
*
*
* A class tagged with this annotation must have a public zero-argument
* constructor. If such a constructor is not defined on the class, a
* FacesException
must be thrown and the application must not be
* placed in service.
*
*
*
* @since 2.0
* @deprecated This has been replaced by the Managed Beans specification in
* general and specifically the dependency injection, scopes and naming
* from the CDI specification. Note that the eager attribute
* for application scoped beans is replaced specifically by observing
* the {@code javax.enterprise.context.Initialized} event for
* {@code javax.enterprise.context.ApplicationScoped}. See 6.7.3 of the CDI
* spec for further details.
*
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Inherited
@Deprecated
public @interface ManagedBean {
/**
* Taken to be the
* managed-bean-name
. See class documentation for details.
*
* @return the managed bean name.
*/
String name() default "";
/**
* Taken to be the value of the
* eager
attribute of the managed-bean
. See class
* documentation for details.
*
* @return the eager attribute of the managed bean.
*/
boolean eager() default false;
}