Injeção de dependência variável

Olá galerinha do mal, tenho uma boa pra quebrar a cabeça.

Preciso injetar uma classe de acordo com o que a pessoa escolhe em um checkbox. Isso pq eu tenho versões de implementação diferentes para a mesma coisa.
A partir de um enum tenho todas as versões das minhas classes que são possíveis escolher. Na hora de executar o método do service eu quero que seja injetado a implementação selecionada.

Até agora eu tenho um qualificador que ao passar o enum q eu quero me retorna o cara certo, porém isso teria que ser dinâmico de acordo com o que o cara selecionou.

Tipo assim:

public ObjetoDeRetorno executaAcao(EnumVersao versao) {
    @Inject
    @Qualifier(versao)
    InterfaceDaImpl executar;

    return executar.run();
}

É claro q não é possível injetar dentro do método, mas mostra o q eu gostaria de fazer.

Obrigado. :smiley:

oi aluisio blz?

até onde eu sei, pra escolher em runtime a implementação a ser usada será necessário uso de alguma fabrica.

grande abrassss

É, acho q vou seguir desta forma mesmo.

Crio um Factory que recebe o parâmetro da versão e me retorna a implementação q eu quero !

Obrigado !

aluisio se seu framework de injeção der a opção vc pode criar uma fabrica de componentes, como no vraptor:

http://vraptor.caelum.com.br/pt/cookbook/componentfactory-como-seletor-de-implementacoes/

de outra pesquisada.

abrassss

Foi utilizado mais ou menos do mesmo jeito, com a exceção desta interface ComponentFactory que me pareceu muito interessante.
Procurei algo semelhante para o Spring 3 mas não encontrei.

Obrigado mesmo assim.