Предположим, у меня есть этот код:
@Controller
@RequestMapping("/something")
public class SomeController {
@Autowired
private SomeService aService;
@RequestMapping("/doStuff")
public void doStuff(@RequestParam("type") String type) {
aService.doStuff();
}
}
В моем приложении мне нужно вызвать конкретную службу в зависимости от указанного типа. Все сервисы реализуют один и тот же интерфейс. Если я правильно понимаю, SomeService не может быть интерфейсом. Я мог бы использовать фабрику услуг и создавать экземпляр службы в зависимости от типа каждый раз, когда выполняется новый запрос, но это выглядит не очень эффективно.
В качестве альтернативы я мог бы использовать другой контроллер для каждого типа службы (и закодировать тип в REST URI), но это потребовало бы большого количества дублирования кода, поскольку все службы в основном реализуют один и тот же интерфейс.
У меня вопрос: если вызываемая служба зависит от переданного параметра, какой шаблон лучше всего использовать для этого сценария?
BeanFactory
, и я боролся с проблемами создания экземпляров bean-компонентов. Спасибо всем за потрясающие ответы, вы сделали мой день. 02.04.2014