Как назначить значение поля контроллера в зависимости от запроса, который он принимает?
У меня есть общий контроллер для всех запросов, при получении которых приложение получает 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";
}