VGross2016
@VGross2016

Как правильно организовать facade для сервиса?

Помогите разобраться, есть Spring Boot приложение, нужно сделать фасад, "особенность" вот какая с контроллера в метод фасада получаем Map возвращаем PageDto, написана универсальная пагинация, метод getPageDto данный метод при одинаковых параметрах и одинаковом типе возвращаемого значения, должен демонстрировать разное поведение(вывод всех постов или по юзеру/теме...)

@Service("post")
public class PostDtoFacadeServiceImpl implements PostDtoFacadeService {

private PostDtoService postDtoService; // интерфейс для разных реализаций postdtoseervice

@Autowired
public PostDtoFacadeServiceImpl(@Qualifier("allPosts") PostDtoService postDtoService) {
    this.postDtoService = postDtoService;
}

@Override
public PageDto<PostDto> callMethodByMethodName(Map<String, Object> parameters) {
    return postDtoService.getPageDto(parameters);
}

планируется, что будет несколько классов в сервисе, в каждом своя реализация для метода getPageDto, с Qualifier всё отрабатывает отлично!
Вопрос вот в чём: как можно сделать фасад универсальным, что бы брать с мапы(или как то иначе) название класса(через интерфейс) и выполнять реализацию именно того метода класса, что бы не лезть руками в фасад, а просто в контроллере передавать имя. Можно ли вообще сделать подобное? Спасибо за внимание и ответы!
  • Вопрос задан
  • 222 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы