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的官網好像有這個。