package demo;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.feign.EnableFeignClients;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@SpringBootApplication
@EnableFeignClients
public class FeignClientApplication {
@Bean
public ApplicationRunner runner(final UrlRestClient client) {
return new ApplicationRunner() {
@Override
public void run(ApplicationArguments args) throws Exception {
System.err.println(client.hello());
}
};
}
public static void main(String[] args) {
SpringApplication.run(FeignClientApplication.class, args);
}
}
@FeignClient(name = "example", url = "example.com", fallback=FallbackClient.class)
interface UrlRestClient {
@RequestMapping(value="/", method = RequestMethod.GET)
String hello();
}
@Component
class FallbackClient implements UrlRestClient {
@Override
public String hello() {
return "oops";
}
}