Como usar o @Autowired para injetar dinamicamente a implementação como um padrão de fábrica

Sou bastante novo no Sprint e estou usando o Spring 3.xe o roo1.1.1 para meu aplicativ

Tenho várias implementações de uma interface que seria @Autowired em outras classes diferentes. Eu só seria capaz de decidir qual implementação seguir no tempo de execução. Isso deve ser alcançado com um padrão de fábric

public interface SomeInterface {
    public void doSomething();
}

Implementação 1.

public class SomeOb implements SomeInterface {
    public void doSomething() {
        //Do something for first implementation here
    }
}

Implementação 2.

public class SomeOtherOb implements SomeInterface {
    public void doSomething() {
        //Do something for first implementation here
    }
}

Agora, no meu serviço, eu precisava deste Autowired como

@Service 
public class MyService {

   @Autowired
   SomeInterface ob;
   //Rest of the code here

}

1) A lógica para escolher qual implementação será conectada automaticamente é apenas tempo de execução conhecido, portanto, não posso usar a anotação @Qualifier para qualificar isso. 2) Tentei criar um FactoryBean como

public class SomeFactoryBean implements FactoryBean<SomeInterface> {
@Override
public SomeInterface getObject() throws Exception {
    if(/*Somecondition*/) {
        return new SomeOb();
    } else
        return new SomeOtherOb();
}

@Override
public Class<? extends SomeInterface> getObjectType() {
    if(/*Somecondition*/) {
        return SomeOb.class;
    } else
        return SomeOtherOb.class;
}

@Override
public boolean isSingleton() {
    return false;
}
}

No applicationContext.xml, tenho a tag mencionada.

Quando executo o servidor da Web, encontro um erro como

No unique bean of type [com.xxxx.xxxx.SomeInterface] is defined: expected single matching bean but found 3: [xxxx, xxxxxxx, xxxxFactory]

Alguém pode me ajudar a resolver esse problema. Se eu não estiver fazendo isso direito, indique-me para fazer isso da maneira cert

Obrigado e agradeço qualquer ajuda, jjk

questionAnswers(2)

yourAnswerToTheQuestion