zoukankan      html  css  js  c++  java
  • Spring Cloud Feign 声明式服务调用

    Feign 简介

    Feign 是一个声明式的伪 Http 客户端,它使得写 Http 客户端变得更简单。使用 Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,可使用 Feign 注解和 JAX-RS 注解。Feign 支持可插拔的编码器和解码器。

    Feign 默认集成了 Ribbon,并和 Eureka 结合,默认实现了 负载均衡 的效果。

    引入依赖

    pom.xml 中主要添加 spring-cloud-starter-netflix-eureka-serverspring-cloud-starter-openfeign 依赖

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
    

    相关配置

    application.yml 中添加以下配置

    spring:
      application:
        name: hello-spring-cloud-web-admin-feign
      thymeleaf:
        cache: false
        mode: LEGACYHTML5
        encoding: UTF-8
        servlet:
          content-type: text/html
    
    server:
      port: 8765
    
    eureka:
      client:
        serviceUrl:
          defaultZone: http://localhost:8761/eureka/
    

    在 Application 入口类中添加 @EnableDiscoveryClient 注解开启扫描 Eureka 客户端,添加 @EnableFeignClients 开启 Feign 功能

    @SpringBootApplication
    @EnableDiscoveryClient
    @EnableFeignClients
    public class WebAdminFeignApplication {
        public static void main(String[] args) {
            SpringApplication.run(WebAdminFeignApplication.class, args);
        }
    }
    

    Service

    通过 @FeignClient 声明调用哪个服务

    @FeignClient(value = "hello-spring-cloud-service-admin")
    public interface AdminService {
    
        @RequestMapping(value = "hi", method = RequestMethod.GET)
        String sayHi(@RequestParam("message") String message);
    
    }
    

    Controller

    创建 Controller 对外提供调用的服务

    @RestController
    public class AdminController {
    
        @Autowired
        private AdminService adminService;
    
        @RequestMapping(value = "hi", method = RequestMethod.GET)
        public String sayHi(@RequestParam String message) {
            return adminService.sayHi(message);
        }
    
    }
    
  • 相关阅读:
    Python实现以不同分辨率分类视频
    JPA 的增删改查方法
    JPA 中 find() 和 getReference() 的区别
    (三)JPA工具类
    (二)JPA实体类主键生成策略
    (一)配置JPA的开发环境
    自定义视图和自定义视图解析器
    view-controller
    RedirectAttributes 的使用
    SpringMVC视图解析中的 forward: 与 redirect: 前缀
  • 原文地址:https://www.cnblogs.com/antoniopeng/p/12687586.html
Copyright © 2011-2022 走看看