primary默認就是true。這個就是優先級
FeignClient會根據注解的配置生成一個接口的實現類,Mybatis也是這樣。
但是還是要去做這個接口的實現,在講fallBack降級的時候會講到。那么做了接口的實現就出現一個問題,我們實現了這個接口后,它自己本身又會生成一個,這樣Spring就進入一個兩難的選擇,不知道該選哪個是我的默認實現類,所以這個時候就需要我們的Primay做支持,告訴Spring你應該加載的是哪一個。而之所以他默認是True,就代表我這個接口生成的實現默認的情況下就是最高優先級。其他的都暫時忽略掉。
但是如果你真的寫出來一個相對比較好的實現,比Feign自己寫的還好。這種時候就可以自己制定Primary,
這里我們來做下演示,寫一個Provider的實現類,
用@Service一定要加到Spring的管理里
實現接口,並重寫方法
重啟consumer服務。
ProviderAPI的primary默認就是True所以優先級別最高。
假設我們把它的primay設置為false,然后重啟服務,,這個時候它就陷入兩難的選擇了。
需要一個可用的,但是找到了兩個,
可以在自己的實現類里面加上@Primay的注解
這里先注解,后續再演示
接口的primary改為true
通過動態代理生成接口的實現類,底層就是字節碼的編譯。
紅色旗子這是最重要的
結束