Feign是一个用于跨服务进行远程调用的一个工具。
接下来,我们梳理一下如何使用。
首先,它的作用是在消费端使用提供端提供的服务接口,但因为在不同的服务,所以他们并不能直接进行调用,所以我们需要创建一个额外的接口,提供中间的连接。
所以我们现在可以这样设置
我们有两个服务,A和B,我们的A服务需要调用B服务中的方法。
第一步我们先创建一个Service-client新的模块来专门进行创建feign接口的创建。
创建完之后,在这个模块中的pom中,加入pom的maven坐标。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
加入完之后,我们创建对应服务的相应服务(比如在图中我们需要调用的是service-cmn的服务),我们就创建service_cmn_client的服务。
再进行创建相应的Java实现类接口。
创建完之后我们要开始在这个接口中注入我们需要进行调用的接口。
@Repository
@FeignClient(value = "service-cmn")
public interface DictFeignClient {
}
在这里我们需要加入@FeignClient的接口,并在它的后面的括号中加入我们需要调用的服务的名称(指的是在yml文件中的引导类的名称),而这里的加入的Repository或者@Service的注解是为可以让他注入一个Bean可以被引导类进行使用。
接下来我们需要在里面写入我们的方法,直接从需要调用的服务的Controller里面直接CV其中的方法。
这里唯一要注意的是要在@PathVariable的后面用括号把request的值放进去。
到此为止,调用的接口client类已经完成了。
接下来,我们就需要在消费端的服务中,进行调用了。
首先,我们需要在消费端的服务中加入feign的maven配置。
也要把远程调用类引入我们的pom文件。
<dependency>
<groupId>com.heima</groupId>
<artifactId>service-cmn-client</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
我们还需要在我们的消费端服务的引导类中加入
@EnableFeignClients(basePackages = "com.atguigu")
这里的注解中需要加入basePackages = "com.atguigu",这个是用于避免spring boot框架会找不到所要调用的Client的接口,进行扫描。
接下来就可以在实现类中进行注入就可以使用了。
大家遇到什么问题,可以留言。