Скажем, у меня есть следующая структура с сервисным интерфейсом ServiceInterface
и несколькими компонентами, реализующими ее: ProductAService
и ProductBService
У меня также есть RequestContext
bean, у которого есть свойство qualifying, которое говорит, что мы в настоящее время обрабатывают ProductA или ProductB. Как затем автоматически добавить автоуведомление или другую аннотацию правильной реализации (ProductAService или ProductBService) в какую-то службу, которая ему нужна (ServiceThatNeedsServiceInterface
ниже).
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();
}