Outjection - Que também podemos chamar de ejeção, é a capacidade do JBoss Seam de expor um objeto referenciado por um atributo de um Seam Component num dos contextos do Seam. Ejetar significa o Seam pegar a referência para um objeto armazenado num atributo privado de um Seam Component e armazenar num dos contextos com um nome associado. Ao expor o atributo, mesmo privado, este estará disponível para injeção em outros Seam Components via injection ou para acesso via Expression Language (EL) numa tela JSF. Esta capacidade é realizada pelo Seam através da anotação @Out. Contudo, no momento de ejetar um atributo como Seam Component num dos contextos, o Seam pode realizar alguma transformação do objeto como, por exemplo, na anotação @DataModel onde o Seam encapsula uma lista de objetos num JSF Data Model antes de armazená-lo no contexto. Assim, quando o usuário seleciona um item num Data Table numa tela JSF, o JSF sabe qual objeto foi selecionado e o Seam recupera este objeto para injetar num outro atributo do Seam Component que foi marcado com a anotação @DataModelSelection.
Sobre os contextos do Seam escrevi os posts Sobre os contextos do JBoss Seam e Seam Contexts Ilustrados. Neste último post cito a diferença entre Context Variable e Instance Variable. Considerando estes dois conceitos, podemos definir como injeção o movimento realizado pelo Seam de uma referência para um objeto do Context Variable para o Instance Variable. Já ejeção significa o movimento de um Instance Variable para um Context Variable. Nestes movimentos, o Seam pode realizar transformação dos objetos.
- Anotações que realizam injeção: @In e @DataModelSelection.
- Anotações que realizam ejeção: @Out, @DataModel, @Factory e @Name.
Nenhum comentário:
Postar um comentário