Feign的url和name都是可配置的,就是从配置文件中读取的属性值,然后用占位符引用就可以了:
${rpc.url}
@FeignClient(name = "me",url = "${rpc.url}", // 这里是可以配置的, 就不用再硬编码了fallbackFactory = MyHystrixFallbackFactory.class,configuration = MultipartSupportConfig.class) public interface RpcService {@RequestMapping(value = "/hello", method = GET)Result<String> helloWorld(@RequestHeader("token") String accessKey,@RequestParam("sign") String sign); }
我觉得原理应该是这样的,当启动的时候肯定会有人去扫描这些注解,扫描到了这些注解之后呢,就会读取注解上面给的值。
在本例中比如url和name,读到了这些值之后,去判断是否用了占位符,如果用了占位符,就用配置的属性值去替换这个占位符,然后再通过Spring实例化,这样FeignClient就有了。
不是所以有的注解都支持这个,我猜的,所以不要瞎用,先查下资料或者做一下测试之类的。
Spring Cloud的官网好像有这个。