首页 > 其他分享 >@FeignClien注解

@FeignClien注解

时间:2023-10-09 22:14:08浏览次数:59  
标签:FeignClien FeignClient 调用 name URL 接口 注解 id

@FeignClient是Spring Cloud中的一个注解,用于定义一个声明式的REST客户端。它可以让我们像调用本地方法一样调用远程服务。

@FeignClient 注解有以下属性:

  • name:指定 FeignClient 的名称,用于创建 FeignClient 的 Spring Bean,默认值为类名的简单名称。
  • value:同 name,用于指定 FeignClient 的名称。
  • path:指定 FeignClient 的 URL 路径前缀,用于拼接请求 URL,如 @FeignClient(name = "example", path = "/api"),则调用 example 客户端的 /hello 接口时,实际请求的 URL 为 /api/hello
  • url:指定 FeignClient 的 URL,用于直接指定请求的 URL,如 @FeignClient(name = "example", url = "http://localhost:8080"),则调用 example 客户端的 /hello 接口时,实际请求的 URL 为 http://localhost:8080/hello

namevalue 属性的使用场景是相同的,都是用于指定 FeignClient 的名称,而 pathurl 属性的使用场景则是不同的,path 属性用于指定 URL 路径前缀,适用于多个客户端共用一个域名的情况,url 属性用于直接指定请求的 URL,适用于只有一个客户端的情况。

 

使用@FeignClient的步骤如下:

  1. 在Spring Boot应用程序中引入Spring Cloud OpenFeign依赖。

  2. 在需要调用远程服务的接口上添加@FeignClient注解,并指定要调用的服务名称。

  3. 在@FeignClient注解中配置远程服务的URL、请求头等信息。

  4. 定义一个接口,用于描述远程服务的API。

  5. 在接口中定义方法,用于调用远程服务的API。

  6. 在需要使用远程服务的地方注入该接口,并调用接口中的方法即可。

例如,我们要调用名为“user-service”的远程服务,可以按以下方式使用@FeignClient:

  1. 引入依赖:
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
  1. 在接口上添加@FeignClient注解:
@FeignClient(name = "user-service")
public interface UserServiceClient {
    // ...
}
  1. 在@FeignClient注解中配置远程服务的URL、请求头等信息:
@FeignClient(name = "user-service", url = "http://localhost:8080", configuration = FeignConfig.class)
public interface UserServiceClient {
    // ...
}
  1. 定义一个接口,用于描述远程服务的API:
public interface UserService {
    @GetMapping("/users/{id}")
    User getUserById(@PathVariable("id") Long id);
}
  1. 在接口中定义方法,用于调用远程服务的API:
@FeignClient(name = "user-service", url = "http://localhost:8080", configuration = FeignConfig.class)
public interface UserServiceClient {
    @GetMapping("/users/{id}")
    User getUserById(@PathVariable("id") Long id);
}
  1. 在需要使用远程服务的地方注入该接口,并调用接口中的方法即可:
@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserServiceClient userServiceClient;

    @Override
    public User getUserById(Long id) {
        return userServiceClient.getUserById(id);
    }
}

配置Feign客户端

在应用程序的配置文件中,需要配置Feign客户端的一些属性,例如:

复制代码
feign:
  client:
    config:
      default:
        connectTimeout: 5000
        readTimeout: 5000
  logger:
    level:
      feign: DEBUG

其中,connectTimeout属性用于指定连接超时时间,readTimeout属性用于指定读取超时时间;logger.level.feign属性用于指定Feign客户端的日志级别。

标签:FeignClien,FeignClient,调用,name,URL,接口,注解,id
From: https://www.cnblogs.com/huangdh/p/17753294.html

相关文章

  • 注解(Annotation)简介,内置注解,元注解,自定义注解
    注解:不是程序本身,可以对程序做出解释(这一点和注释没什么区别)可以被其他程序(比如编译器)读取@Functional(这是L)(这是I)Interface  函数式接口 内置注解:java本来就有的注解@Override  重写@Deprecated 已废弃,不推荐使用的意思@SuppressWarnings 镇压警告 ......
  • 【Mybatis】model类通过注解忽略某属性
    当使用的model类中需要新增一些字段仅用于程序中传参,而不需要添加到数据库表中时,可以通过添加@Transient注解使mybatis忽略它而不做对应关系。例如:@TransientprivateStringuserConfig;如果是使用的mybatisplus,需要使用@TableField(exist=false)注解,表示表中不存在......
  • SpringBoot之使用Redis和注解实现接口幂等性
    目录1接口幂等性1.1概念1.2实现思路1.3代码实现1.3.1pom1.3.2JedisUtil1.3.3自定义注解@ApiIdempotent1.3.4ApiIdempotentInterceptor拦截器1.3.5TokenServiceImpl1.3.6TestApplication1.4测试验证1.4.1获取token的控制器TokenController1.4.2TestController1.5注意......
  • 2.SpringBoot——常用注解
    Controller层//设置当前控制器类为RESTful风格,等同于@Controller与@ResponseBody两个注解的组合功能@RestController//设置当前控制器方法(模块)的请求访问路径@RequestMapping("/web/role")//依赖注入/自动装配,获取Bean@Resource@AutowiredAutowired和Resource的区别两者......
  • springAMQP--DirectExchange(在监听方法上用注解声明交换机队列和key,发送消息时会带一
         ......
  • SpringBoot注解
    一、注解(annotations)列表@SpringBootApplication:包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。其中@ComponentScan让springBoot扫描到Configuration类并把它加入到程序上下文。@Configuration等同于spring的XML配置文件;使用Java代码可以检查类型安......
  • 多数据源管理:掌握@DS注解的威力
    大家在日常后端开发过程,不可避免的会接触到需要用到配置多个数据源的场景,在这里,小编介绍一种简单方便的,只需要简单的配置和一个@DS注解就能实现动态数据源的方式,这种动态数据源底层原理是基于Mybatis-plus来实现的。1、配置方式首先是pom.xml<dependency><groupId>com......
  • MyBatis注解开发
    MyBatis注解开发MyBatis还支持非常便捷的基于注解的配置方式。在该方式中,我们不再编写映射文件,只需要在接口文件中利用注解的方式编写SQL语句并实现结果映射。而且可在同一项目中混合使用XML方式和注解方式快速提高开发效率;两者之间的移植也非常简单。常用注解概述@Select@Sel......
  • 基于注解的装配、以及纯Java配置(不用xml)
    1、基于注解的装配参考课本以及陈恒spring教材很好理解,还参考了https://blog.csdn.net/huweiliyi/article/details/107641886(偏向代码分析)https://www.bilibili.com/video/BV1tM4y1Y7Jf/?spm_id_from=333.337.search-card.all.click&vd_source=af888e4b9fbc70c4d5e7a445796ae8a1(......
  • 4. spring完全注解开发,独立配置,不使用xml
    user类: 转换结果: 注入参数还是上一篇所说的方法  支持最低版本spring4.1运行方法要有所改变:原来的://获取配置文件ApplicationContextcontext=newClassPathXmlApplicationContext("application.xml");//配置文件自动扫描z......