码迷,mamicode.com
首页 > 编程语言 > 详细

spring cloud学习--Feign

时间:2018-08-14 11:15:02      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:gis   int   pat   默认   添加   注意   false   list()   cli   

Feign简介:

  Feign是一个声明式的Web服务客户端,使用Feign可使得Web服务客户端的写入更加方便.它具有可插拔注释支持,包括Feign注解和JAX-RS注解、Feign还支持可插拔编码器和解码器、Spring Cloud增加了对Spring MVC注释的支持,并HttpMessageConverters在Spring Web中使用了默认使用的相同方式。Spring Cloud集成了Ribbon和Eureka,在使用Feign时提供负载平衡的http客户端。Fegin对Robbin进行了封装,如果需要配置自己的负载算法,可以自定义Ribbon的算法即可

   1.pom文件修改

<dependencies>

		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-feign</artifactId>
		</dependency>
		
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-eureka</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-ribbon</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-config</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>springloaded</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
		</dependency>

	</dependencies>

  2.application.yml

server:
  port: 8002

eureka: 
  client: 
    register-with-eureka: false
    service-url: 
      defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/,http://eureka7001.com:7001/eureka/

  3.编写ClientService  

@FeignClient(value ="cloud-provider-dept")
public interface DeptClientService {
	
	@RequestMapping(value ="/dept/add",method=RequestMethod.POST)
	public boolean add(@RequestBody Dept d) ;
	
	@RequestMapping(value ="/dept/get/{id}",method=RequestMethod.GET)
	public Dept get(@PathVariable("id") Long id) ;
	
	@RequestMapping(value ="/dept/list",method=RequestMethod.GET)
	public List<Dept> list() ;
}

  4.编写Controller

@RestController
public class DeptController_consumer {
	
	@Autowired
	private DeptClientService service;
	
	@RequestMapping(value ="/consumer/dept/add")
	public boolean add(@RequestBody Dept d) {
		
		return service.add(d);
	}
	@RequestMapping(value ="/consumer/dept/get/{id}")
	public Dept get(@PathVariable("id") Long id) {
		return service.get(id);
	}
	
	@RequestMapping(value ="/consumer/dept/list")
	public List<Dept> list() {

		return service.list();
	}
}

  5.修改主启动类

@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients(basePackages = {"com.wuzz.springcloud"})
@ComponentScan("com.wuzz.springcloud")
public class DeptConsumer_feign_App 
{
    public static void main( String[] args )
    {
    	SpringApplication.run(DeptConsumer_feign_App.class, args);
    }
}

ribbon和feign区别

        Ribbon添加maven依赖 spring-starter-ribbon    使用@RibbonClient(value="服务名称")    使用RestTemplate调用远程服务对应的方法
        feign添加maven依赖 spring-starter-feign    服务提供方提供对外接口  调用方使用    在接口上使用    @FeignClient("指定服务名")
Ribbon和Feign的区别:
Ribbon和Feign都是用于调用其他服务的,不过方式不同。
1.启动类使用的注解不同,Ribbon用的是@RibbonClient,Feign用的是@EnableFeignClients。
2.服务的指定位置不同,Ribbon是在@RibbonClient注解上声明,Feign则是在定义抽象方法的接口中使用@FeignClient声明。
3.调用方式不同,Ribbon需要自己构建http请求,模拟http请求然后使用RestTemplate发送给其他服务,步骤相当繁琐。
Feign则是在Ribbon的基础上进行了一次改进,采用接口的方式,将需要调用的其他服务的方法定义成抽象方法即可,
不需要自己构建http请求。不过要注意的是抽象方法的注解、方法签名要和提供服务的方法完全一致。

spring cloud学习--Feign

标签:gis   int   pat   默认   添加   注意   false   list()   cli   

原文地址:https://www.cnblogs.com/wuzhenzhao/p/9472607.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!