美文网首页
FeignClient 不用注解 其他方式构建实例

FeignClient 不用注解 其他方式构建实例

作者: 伊夫_艾尔斯 | 来源:发表于2023-07-13 17:23 被阅读0次

    在 Spring Cloud 中,@FeignClient 注解是用于创建 Feign 客户端的方式之一。然而,如果您不想使用注解,还有其他方式来构建 Feign 客户端的实例。

    一种方式是使用 Feign 的编程式方式来创建客户端实例。以下是一个简单的示例:

    • 首先,确保您的项目中已经添加了相应的依赖,包括 feign-core 和其他相关的 Feign 依赖。

    • 创建一个接口,定义您要调用的远程服务的方法。例如,假设有一个名为 UserService 的远程服务,其中包含一个获取用户信息的方法:

    public interface UserService {
        @RequestMapping(method = RequestMethod.GET, value = "/users/{id}")
        User getUserById(@PathVariable("id") String id);
    }
    
    
    • 创建一个实现 Feign 客户端接口的类,并在其中编写具体的实现逻辑。这里可以使用 Feign 提供的构建器模式来创建客户端实例:
    @Configuration
    public class FeignClientConfig {
         @Bean
        FeignClientBuilder getFeignClientBuilder(ApplicationContext applicationContext){
            return new FeignClientBuilder(applicationContext);
        }
    
       @Bean
        UserService getUserService (FeignClientBuilder feignClientBuilder){
            // name  参数在有注册中心时可以按name找到服务进行调度
            FeignClientBuilder.Builder<UserService > serviceBuilder = feignClientBuilder.forType(UserService .class, "boot-user-server");
            return serviceBuilder
                        // url 可以直接配置请求服务的地址前缀: 配置后本身按名称找服务的方式就不生效
                        .url("http://localhost:9080")
                        .path("/user/api/")
                        .build();
        }
    
    
    }
    
    
    • 在您的应用程序中,使用 @Autowired注解注入实例来调用远程服务的方法:
    public class MyApplication {
        @Autowired
        UserService userService;
    
        public void test() {
            User user = userService.getUserById("123");
            // 处理返回的用户信息
        }
    }
    
    

    From ChatGPT 有改动

    相关文章

      网友评论

          本文标题:FeignClient 不用注解 其他方式构建实例

          本文链接:https://www.haomeiwen.com/subject/roimudtx.html