O Jboss Seam não usa Injeção de Dependências, ele usa bijection. Para usar desta funcionalidade basta usas as anotações @in e @out. A anotação @in injeta um determinado componente Seam em uma propriedade. Já a anotação @out, injeta a instância de um determinado componente no atributo do bean e também em uma variável de contexto.
Vamos supor que temos um componente seam:
// imports
@Name("beanTest1")
public class BeanTest1 {
// atributos
}<code>
Para injetá este componente Seam basta:
// imports
@Name("beanTest2")
public class BeanTest2 {
@In
private BeanTest2 beanTest1;
}<code>
No exemplo acima, BeanTest1 será automaticamente injetado na propriedade beanTest1. Como o componente e a propriedade tem o mesmo nome, o Jboss Seam consegue fazer a associação. Caso fossem diferentes poderia ser feito da seguinte forma: @In(”#{beanTest1}”). O atributo required também é bastante interessante, pois permite validar a obrigatoriedade ou não da injeção de dependência.
Para a anotação @out vamos imaginar o seguinte exemplo:
// imports
@Name("beanTest2")
public class BeanTest2 {
@DataModel
private List<BeanTest1> beanList;
@Out
@DataModelSelection
private BeanTest2 selectedBean;
}<code>
Assim quando a linha for selecionada será injetada a propriedade beanTest1 e uma variável de escopo de evento selectedBean seria injetado novamente. Desta forma selecionando uma linha seria possÃvel acessar a linha selecionada da seguinte maneira: #{selectedBean}.
É uma grande pena que o Jboss seam não tenha autowire para fazer as associações pelo menos de injeção automaticamente. Mas já ajuda bastante.
Comentarios recentes