GitHub github = Feign.builder()
.decoder(new GsonDecoder())
.target(GitHub.class, "https://api.github.com");
public interface GitHub {
@RequestLine("GET /repos/{owner}/{repo}/contributors")
List contributors(@Param("owner") String owner, @Param("repo") String repository);
class Contributor {
String login;
int contributions;
}
}
上面会生成Github接口的实现类,下面来一探究竟
1)Feign.builder()会new出Feign的一个内部类feign.Feign.Builder;
2)通过target方法,将参数包装成Target类,然后是build方法
上面把Contract类传入到ParseHandlersByName中,最后new出一个
Feign接口的实现类



