Personnalisé Autowire candidat haricots au Printemps 3

Dire que j'ai la structure suivante avec une interface de service ServiceInterface et un couple de composants de mise en œuvre: ProductAService et ProductBService j'ai aussi un RequestContext bean qui a une qualification de la propriété qui dit que nous sommes-dire en cours de traitement ProductA ou Produitb. Comment puis injecter automatiquement avec permettra à l'autowiring ou d'autres annotation de la mise en œuvre correcte (ProductAService ou ProductBService) dans certains services qui en ont besoin (ServiceThatNeedsServiceInterface ci-dessous).

public interface ServiceInterface {
  void someMethod();
}

@Component(name="ProductAService")
public class ProductAService implements ServiceInterface {
  @Override public void someMethod() { 
    System.out.println("Hello, A Service"); 
  }
}

@Component(name="ProductBService")
public class ProductBService implements ServiceInterface {
  @Override public void someMethod() { 
    System.out.println("Hello, B Service"); 
  }
}

@Component
public class ServiceThatNeedsServiceInterface {

  //What to do here???
  @Autowired
  ServiceInterface service;

  public void useService() {
    service.someMethod();
  }
}

@Component
@Scope( value = WebApplicationContext.SCOPE_REQUEST )
public class RequestContext {
  String getSomeQualifierProperty();
}
InformationsquelleAutor Strelok | 2013-02-21