zoukankan      html  css  js  c++  java
  • (三)Fegin声明式服务调用

    上一篇,讲了SpringClound中的消费者采用Ribbon+Rest来实现,这回我们用组件Feign来实现服务的消费者,Fegin中也是默认集成了Ribbon的;和Eureka结合也能实现负载均衡;

    概括来说,Fegin的区别就是基于注解来实现,具备可插拔的特性;

    依赖前文说的Eureka,service-hello(一个项目,注册两个实例)

    创建Fegin项目;

    在Idea里,新建项目,选择Spring initializer.

    下面的pom

    	<dependencies>
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-web</artifactId>
    		</dependency>
    		<dependency>
    			<groupId>org.springframework.cloud</groupId>
    			<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    		</dependency>
    		<dependency>
    			<groupId>org.springframework.cloud</groupId>
    			<artifactId>spring-cloud-starter-openfeign</artifactId>
    		</dependency>
    
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-test</artifactId>
    			<scope>test</scope>
    		</dependency>
    	</dependencies>
    

      

    配置properties文件参数;

    #服务端口
    server.port=8886
    
    #注册服务中心地址
    eureka.client.service-url.defaultZone=http://localhost:8882/eureka/
    
    #注册服务名
    spring.application.name=service-feign
    

      

    启动类如下:

    @EnableDiscoveryClient
    @EnableFeignClients      //开启Feign的功能:
    @SpringBootApplication
    public class SpringCloundEurekaFeginExampleApplication {
    
    	public static void main(String[] args) {
    		SpringApplication.run(SpringCloundEurekaFeginExampleApplication.class, args);
    	}
    }
    

      

    然后我们定义一个fegin的接口,在这个接口中我们通过@ FeignClient(“服务名”)来实现消费服务提供者;

    //代表改接口用费"service-hello"的服务 提供
    @FeignClient(value = "service-hello")
    public interface IFeginService {
    
        @RequestMapping(value = "/index")
        public String index();
    }
    

      

    我们再在fegin项目中暴露一个访问接口,controller;

    @RestController
    public class FeginController {
    
        @Autowired
        private IFeginService feginService;
    
        @RequestMapping("/index")
        public String index(){
            return feginService.index();
        }
    }
    

      

    代码基本编写完成,下面我们来启动项目;Eureka,service-hello(两个实例),最后启动service-fegin;

    Feign整合了Ribbon和Hystrix,此外,Spring Cloud还对Feign提供了Spring MVC注解的支持,也使得我们在Web中可以使用同一个HttpMessageConverter

    总起来说,Feign具有如下特性:

    • 可插拔的注解支持,包括Feign注解和JAX-RS注解;
    • 支持可插拔的HTTP编码器和解码器;
    • 支持Hystrix和它的Fallback;
    • 支持Ribbon的负载均衡;
    • 支持HTTP请求和响应的压缩。
  • 相关阅读:
    当jsp中Springboot之登录模块探索(含Token,验证码还有数据库
    当php内容的内存分页不,如何更快的使用head的分段式处理方式
    Java 开发 2021 年发生的的一些自我总结和教训,即使反省
    总结这些年php函数中遇到的绊脚石,告别以后面试的现场尴尬
    使用 WSDL 指定的标准 SOAP 消息格式
    ORACLE数据库导出表,字段名,长度,类型,字段注释,表注释语句
    oracle中start with和connect by的用法理解
    关于RabbitMQ以及RabbitMQ和Spring的整合
    Vue.js——基于$.ajax实现数据的跨域增删查改
    HTML表格跨行、跨列操作(rowspan、colspan)
  • 原文地址:https://www.cnblogs.com/skyLogin/p/10007695.html
Copyright © 2011-2022 走看看