Custom-Autowire-candidate Bohnen im Frühjahr 3

Sagen, ich habe die folgende Struktur mit einem service-Schnittstelle ServiceInterface und ein paar Komponenten zur Umsetzung: ProductAService und ProductBService ich habe auch ein RequestContext bean, hat eine qualifizierende Eigenschaft, die sagt, dass wir sagen, dass derzeit die Bearbeitung von ProductA oder ProductB. Wie kann dann automatisch Spritzen mit autowiring oder andere annotation der korrekten Umsetzung (ProductAService oder ProductBService) in einigen service, der es benötigt (ServiceThatNeedsServiceInterface unten).

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
Schreibe einen Kommentar