Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida no Ex. 3 da Aula 8 - Injeção de dependências

Declaramos um datasource no spring-context e o spring se responsabilizou por injeta-lo nas classe com notação Repository . Correto ? Caso houvesse 2 datasources declarados na aplicação sendo um para cada DAO. Como iriamos definir que o dao ContaDAO deve receber o datasource data1 e o ClienteDAO deve receber o data2 ?

1 resposta
solução!

Oi Samuel, tudo bem?

Pra isso existem os Qualifiers que por padrão é o próprio id do atributo definido no xml de configuração.

Por exemplo, se você tem:

<bean id="daoProd" class="br.com.caelum.dao.UsuarioDao" />

<bean id="daoDev" class="br.com.caelum.dao.UsuarioDao" />

Para escolher um, basta que o nome do atributo seja o mesmo:

Exemplo:

@Autowired
private UsuarioDao daoProd;

Ou você pode usar a anotação @Qualifier apontando pro id do bean:

@Autowired
@Qualifier("daoProd")
private UsuarioDao usuarioDao;

Uma terceira opção seria definir um qualifier diferente do id do bean. Isso pode ser feito através da tag <qualifier>:

<bean id="daoProd" class="br.com.caelum.dao.UsuarioDao" >
    <qualifier value="producao" />
</bean>

E você poderá usá-lo na anotação em vez de usar o id:

@Autowired
@Qualifier("producao")
private UsuarioDao usuarioDao;

Tudo bem? Abraços!