Как назначить значение поля контроллера в зависимости от запроса, который он принимает?

У меня есть общий контроллер для всех запросов, при получении которых приложение получает json по внешнему API и отправляет его браузеру. Также в контроллере есть поле

private Communication communication;

Communication - интерфейс. Создал его, чтобы не создавать кучу разных полей для каждой реализации. Присутствуют несколько реализаций данного интерфейса, например:

@Component
public class NASACommunication implements Communication {

    @Autowired
    private RestTemplate restTemplate;

    private final String URL = "someURL";

    public NASAInfo getInfo() {
        NASAInfo nasaInfo = restTemplate.getForObject(URL, NASAInfo.class);

        return nasaInfo;
    }
}

Теперь к самому вопросу:

Делать для каждого запроса отдельный контроллер не хочется, потому что функциональность минимальна. Есть ли способ присваивать конкретную реализацию Communication в контроллере в процессе получения запроса? (в зависимости от самого запроса)

Часть кода из контроллера:

@GetMapping("/NASA")
    public String showAstronomyPictureOfTheDay(Model model) {
        NASAInfo nasaInfo = communication.getInfo();
        model.addAttribute("nasaInfo", nasaInfo);

        return "/catalog/NASA";
    }

Ответы (0 шт):