Помогите разобраться, есть 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 всё отрабатывает отлично!
Вопрос вот в чём: как можно сделать фасад универсальным, что бы брать с мапы(или как то иначе) название класса(через интерфейс) и выполнять реализацию именно того метода класса, что бы не лезть руками в фасад, а просто в контроллере передавать имя. Можно ли вообще сделать подобное? Спасибо за внимание и ответы!