微服务远程调用的用法

1.首先在pom文件中引入相关依赖

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-dependencies</artifactId>
  <version>${spring-cloud.version}</version>
</dependency>

2.然后在启动类上加上@EnableFeignClients注解,该注解用来启用feign客户端

@EnableCaching
@EnableFeignClients
@EnableDiscoveryClient
@SpringBootApplication
@MapperScan(value = "cn.***.***.***.mapper")
public class A****Application {
    public static void main(String[] args) {
        SpringApplication.run(A****Application.class,args);
    }
}

@EnableCaching注解用来开启缓存 具体使用在之前文章有体现。

@EnableDiscoveryClient和@EnableEurekaClient注解都是能够让注册中心能够发现,扫描到该服务。@EnableEurekaClient只适用于Eureka作为注册中心,@EnableDiscoveryClient可以是其他注册中心。

@MapperScan注解用来扫描mapper对应的包名路径

3.远程调用接口

 在对应包名新建一个接口用来调用其他微服务的方法

@RestController
@FeignClient(name = "user", path = "/user")
public interface SysUserservice {

    @PostMapping("add")
    boolean add(SysUser sysUesr)

    @PostMapping("update")
    boolean update(SysUser sysUesr)
}

@FeignClient注解里面的属性
valuename的作用一样,如果没有配置url那么配置的值将作为服务名称,用于服务发现。反之只是一个名称。如果需要调用多个的话这俩个值是唯一性的,重复的话启动会报错,解决方法加contextId 用来区分

The bean 'user.FeignClientSpecification' could not be registered. A bean with that name has already been defined and overriding is disabled.

contextId 我们不想将所有的调用接口都定义在一个类中,有一种解决方案就是为每个Client手动指定不同的contextId,这样就不会冲突了。

path
path定义当前FeignClient访问接口时的统一前缀,比如接口地址是/user/add, 如果你定义了前缀是user, 那么具体方法上的路径就只需要写/add即可。

url
url用于配置指定服务的地址,相当于直接请求这个服务,不经过Ribbon的服务选择。像调试等场景可以使用。

(注:路径对应的是调用另一个服务中controller层的路径)

以上就可以实现微服务远程调用。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值