Contextos e Inyección Dependiente (CDI) Roberto Moriyón
Beans en Java EE 6 Java EE 6 contempla dos tipos de beans: Enterprise Java Beans (EJBs) Beans gestionados Los beans gestionados tienen asociado un contexto (de aplicación, de sesión, de solicitud)
Beans gestionados Cualquier clase normal se puede utilizar para construir beans gestionados, pero para que sus atributos sean accesibles mediante UEL tiene que ser un Java Bean Los beans gestionados pueden corresponder directamente a un contexto o depender de otro bean gestionado
Beans gestionados correspondientes directamente a un contexto Los beans que corresponden directamente a un contexto son accesibles a través de UEL Su nombre en UEL es el de su clase, comenzando por minúscula Se crea automáticamente un bean de este tipo por cada contexto que se crea del tipo correspondiente Se especifican anotando su clase como @Named y además como @RequestScoped, @SessionScoped, @ApplicationScoped o @ConversationScoped (JSF, más fino que el contexto de sesión)
Beans gestionados dependientes Los beans gestionados dependientes de otro bean gestionado se especifican inyectándolos como atributos de su clase mediante la anotación @inject El contexto por defecto de un bean gestionado inyectado es el del objeto en el que se inyecta
Beans gestionados: Restricciones dependientes del contexto Los beans gestionados cuyo contexto es de sesión o aplicación tienen que ser serializables Los beans gestionados con contexto de solicitud no es preciso que sean serializables
Configuración Las aplicaciones web y módulos web o EJB que utilizan beans gestionados han de tener un fichero de configuración beans.xml, que puede estar vacío
Otros Asignación a variables en UEL: Anotación @Named Inyección dependiente del contexto: Anotación @Produces y clase Instance para la definición de condiciones para la inyección y búsqueda de objetos a inyectar Los Web Beans pueden ser EJBs (por ejemplo, para control de acceso)