...
@AutoCreate: Fuerza la creación del componente si no existe.
- En caso contrario sólo se creará cuando se le invoque por primera vez.
@Startup: Sólo aplicable a componentes con scope SESSION o APPLICATION. Fuerza que este componente se cree cuando la aplicación o la sesión arrancan. Sus propiedades son:
depends: Un listado de los componentes de los que depende este para inicializarlos antes que él.
@Install: Define cuando un componente se crea o no. Esta anotación está concebida para cuando tenemos componentes con el mismo nombre y que en tiempo de despliegue se elija cual se tendrá en cuenta en la aplicación. Sus propiedades son:
classDependencies: Indica que el componente será instalado sólo cuando las clases en esta lista estén cargadas.
debug: Indica si este componente es de debug.
dependencies: Indica que este componente será instalado después de que los componentes en esta lista estén cargados.
genericDependencies: Similar a dependencies, solo que recibe una lista de clases en vez de identificadores.
precedence: En caso de conflicto de nombres indica la precedencia de este componente. El componente con mayor precedencia se instalará.
value: Indica si este componente es el que se debe instalar por defecto.
...
Por defecto (sino se especifica la propiedad value) la anotación @In busca un componente Seam de nombre igual al de la propiedad en sus contextos en el siguiente orden: MethodContext, EventContext, PageContext, ConversationContext, SessionContext, BusinessProcessContext y ApplicationContext. No obstante mediante la propiedad scope podemos mejorar dicha búsqueda. También se puede utilizar en un método set.
No obstante, la forma recomendada para inyectar un Bean que garantiza que, siempre intentará inyectarlo es usando "value" y "create": @In(create = true, value = "servicioPersistenciaAnuncios")
| Bloque de código | ||||
|---|---|---|---|---|
| ||||
@Out private ServicioPersistenciaAnuncios servicioAnuncios; @Out(value = "servicioPersistenciaAnuncios") private ServicioPersistenciaAnuncios servicioAnuncios; @Out(value = "servicioPersistenciaAnuncios", scope = ScopeType.CONVERSATION) private ServicioPersistenciaAnuncios servicioAnuncios; |
...
| Bloque de código | ||||
|---|---|---|---|---|
| ||||
@PostConstruct@Create public void inicializaBuscador() { this.nombreAnuncio = ""; this.descAnuncio = ""; this.fechaAnuncio = null; } |
Anotaciones del
...
estándar JSF para inicialización y destrucción
Estas anotaciones no tienen en cuenta JBoss Seam, por lo que no debemos usarlas, pero sí las veremos en documentación existente.
@PostConstruct: Situada en un método publico y void de nuestro Bean, se utiliza para indicar que ese método se ejecute inmediatamente después del constructor del Bean con el fin de inicializarlo, y tener disponible los elementos inyectados por el contenedor.
@PreDestroy: Esta anotación la situaremos en un método publico y void de nuestro Bean y realizará las tareas que queremos que se ejecuten justo antes de que nuestro Bean sea eliminado de la aplicación y marcado para que el recolector Java lo elimine de memoria.
Anotaciones de JBoss Seam para inicialización y destrucción (equivalentes a las del estándar)
@Create: Situada en un método publico y void de nuestro Bean, se utiliza para indicar que ese método se ejecute inmediatamente después del constructor (y del método anotado con @PostConstruct) del Bean con el fin de inicializarlo, y tener disponible los elementos inyectados por el contenedor y por JBoss Seam (utilizando @In, @Out, etc.). Es la alternativa de JBoss Seam a la anotación @PostConstruct.
...