whereeaglesdare
@whereeaglesdare

Как реализовать фабричный метод в Spring?

Добрый день
Подскажите, пожалуйста, как реализовать фабричный метод в Spring boot.

На примере ниже показан метод, который создает одну из реализаций интерфейса State

public State getState(Long chatId) throws NoSuchMethodException,
            IllegalAccessException, InvocationTargetException, InstantiationException {
        ChatState chatState = getChatState(chatId);
        DescriptorDto dto = getDescriptorByChat(chatState);
        State state = this.getStateClass(dto).getDeclaredConstructor(String.class, String.class,
                String.class, String.class, List.class)
                .newInstance(dto.getState(), dto.getNextState(),
                        dto.getText(), dto.getErrorState(), null);
        return state;
    }


Проблема в том, что некоторые реализации этого интерфейса требуют обращения к другим компонентам спринга.
Так как тут простой конструктор, то у меня нет возможности к ним обратиться(или в самом конструкторе всем классам передавать какой-нибудь сервис по умолчанию)

Подскажите. что делать?
  • Вопрос задан
  • 137 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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