А что если бы можно было создать интерфейс, например, такой:
@Service
public interface GoogleSearchApi {
/**
* @return http status code for Google main page
*/
@Uri("https://www.google.com")
int mainPageStatus();
}
А затем просто внедрять его и вызывать его методы:
@SpringBootApplication
public class App implements CommandLineRunner {
private static final Logger LOG = LoggerFactory.getLogger(App.class);
private final GoogleSearchApi api;
public App(GoogleSearchApi api) {
this.api = api;
}
@Override
public void run(String... args) {
LOG.info("Main page status: " + api.mainPageStatus());
}
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
Такое вполне возможно реализовать (и не очень то и сложно). Дальше я покажу, как и зачем это делать.