声明式服务调用客户端fegin

前言

Fegin是Netflix发明的声明式服务调用框架

当Fegin与Ribbon和Eureka结合使用时,Fegin就有了负载均衡的功能,在实现fegin的情况下,我们只需定义一个接口通过注解的方式,即可完成服务接口的绑定。

Feign内置了Ribbon,用来做 客户端负载均衡 ,去调用服务注册中心的服务。

说明:

项目中maven及依赖的版本如下

   maven  3.8.4
spring-boot-starter-parent
2.7.10
spring-cloud
2021.0.6
   jdk1.8
spring-cloud-starter-openfeign
3.1.6

实验步骤

1、搭建Eureka Server

 可参考博客:Eureka——服务注册与发现框架_杜小白也想的美的博客-CSDN博客

2、搭建Eureka Client提供服务

可参考博客:Eureka——服务注册与发现框架_杜小白也想的美的博客-CSDN博客

添加controller包并创建HelloController类

如下:

@RestController
public class HelloController {
    @RequestMapping(value = "/hello1",method = RequestMethod.GET)
    public String hello1(@RequestParam String name){
        return  "hello,"+name;
    }
   
}

3、搭建Eureka Client并加入Feign依赖作为消费者

具体步骤如下:使用Spirng Initializr在创建Eureka Client的基础上添加Fegin依赖

添加依赖的方法,在上述项目中的pom.xml文件中添加如下依赖

<!--feign-->
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-openfeign</artifactId>
            <version>3.1.6</version>
		</dependency>

yml文件配置如下:

server:
  port: 8764    #配置端口号
spring:
  application:
    name: eureka-feign-client   #指定用户名

  
eureka:
  client:
    service-url:
      defaultZone: http://localhost:7000/eureka

创建service层,提供服务接口FeginService,通过Fegin调用服务

说明:@FeginClient注解指定要调用的服务提供者,如果项目使用了Ribbon(显然Fegin内置了Ribbon),name属性会作为微服务的名称,用于服务发现

@Service
@FeignClient(
    name = "eureka-provider"
)
public interface FeignService {
    @RequestMapping(
        value = {"/hello1"},
        method = {RequestMethod.GET}
    )
    String hello(@RequestParam("name") String name);

}

创建controller层并在该层中创建FeginController类对外提供API 并调用FeginService接口查看fegin的调用效果:

@RestController
public class FeignController {
    @Autowired
    FeignService feignService;

    @RequestMapping(value = "/helloUser",method = RequestMethod.GET)
    public String hello(){
        StringBuilder sb=new StringBuilder();
        sb.append(feignService.hello("czbk")).append("<BR/>");

        return sb.toString();
    }
}

4、测试

实验效果如下:

 以上就是使用fegin调用服务的简单案例,其中包括简单的参数的绑定。

总结

配置过程

1、在springboot项目中的pom.xml文件中添加spring-cloud-starter-openfegin。

2、创建service接口并添加上@FeginClient注解,并配置调用的服务实例名称。

3、添加@RequestMapper配置服务的调用,请求路径及抽象方法。

4、controller调用servicer接口。

5、启动类中添加@EnableFeginClients。

注意:

1、如果有多个实现Feginclient注解的接口,@EnableFeginClients注解需要配置clients属性或者basePackages参数,加载包含@FeginClient接口的bean对象,具体原因可参考如下链接:

(23条消息) Spring Cloud中关于@EnableFeignClients注解的属性字段basePackages_@enablefeignclients(basepackages_y_bccl27的博客-CSDN博客

2、使用@RequestParam注解时默认参数必选,可通过required参数配置,其默认值为true

3、可能会出现如下错误:
Consider renaming one of the beans or enabling overriding by setting spring.main.allow

解决方法:(23条消息) SpringBoot启动提示Consider renaming one of the beans or enabling overriding by setting spring.main.allow_Dyeln的博客-CSDN博客

4、@RequestMapper中的value属性值不可以重复。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杜小白也想的美

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值