您好,登錄后才能下訂單哦!
今天小編給大家分享一下Java微服務間接口調用feign的方法是什么的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
Feign是一種聲明式、模板化的HTTP客戶端。在spring cloud中使用Feign,可以做到類似于普通的接口的請求調用,可以發現對應的服務的接口,進而直接調用對應服務中的接口。
首先需要在各個微服務中引入依賴
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
然后在啟動類中加入注解@EnableFeignClients ,開啟Feign客戶端。
@EnableDiscoveryClient 和 @EnableFeignClients ,并在配置文件中添加各自的服務名,以及配置Nacos的服務地址
//服務A的啟動類 @EnableDiscoveryClient //nacos注冊 @EnableFeignClients //Feign 服務調用 @SpringBootApplication public class ApplicationA { public static void main(String[] args){ SpringApplication.run(ApplicationA.class,args); } } //服務B的啟動類 @EnableDiscoveryClient //nacos注冊 @EnableFeignClients //Feign 服務調用 @SpringBootApplication public class ApplicationB { public static void main(String[] args){ SpringApplication.run(ApplicationB.class,args); } }
application.properties
服務A配置 # 服務端口 server.port=8001 # 服務名 spring.application.name=serviceA # nacos服務地址 spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 --------------------------服務B配置------------------------------- # 服務端口 server.port=8003 # 服務名 spring.application.name=serviceB # nacos服務地址 spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
然后在當前服務內編寫Feign接口,接口與普通的controller層類似,只是在類上不需要寫@Controller等注解,只需要加上@Component 、 @FeignClient注解即可,下面的請求方法需要寫上請求方式(根據提供服務的接口適配)@PostMapping(“/findList”)注解。如下:
@Component @FeignClient(value = "sso", path = "/api/user", fallback = UserClientHystrix.class)//value是需要調用的服務名稱,path是sso服務內的請求路徑 //value必選是服務名(就是yaml中server.name) //path是前綴(就是yaml中server.contentPath) //fallback是服務熔斷的類 public interface UserClient { /** * 獲取對象集合 * @param object * @return */ @PostMapping("/findList")//根據服務適配添加注解 Result<UserDO> findList(@CustomJSONBody Object object); } //@FeignClient注解用于指定從哪個服務中調用功能 ,名稱與被調用的服務名保持一致。
@Component @FeignClient("serviceB") public interface ServiceBClient { @PostMapping("serviceB/test") public Result test(@RequestParam String args); }
注意微服務A(調用者)中ServiceBClient接口中編寫的是微服務B中被調用的接口,參數類型方法名要一致。以下時微服務B中被調用的接口(Controller)
服務B中接口的示例 @RestController @RequestMapping("serviceB") @CrossOrigin public class VodController { @PostMapping("test") public void test(@RequestParam String args){ System.out.println(args); } }
在微服務A中調用服務B中的接口
1.初始化操作:添加依賴,配置等等。
2.創建Client接口,使用@GetMapping注解對被調用的微服務進行地址映射。
3.在微服務A中調用Client接口中的方法。
注:① 接口層添加注解@FeignClient,并在注解中指明屬性value="服務提供方的實例名";
② 在方法上添加映射的URL要與服務提供方接口的URL一致。
以上就是“Java微服務間接口調用feign的方法是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。