Download Inyección de dependencia y contexto
Document related concepts
no text concepts found
Transcript
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)