微服务feignclient_微服务-(声明式调用feign)
聲明式調用 Fegin
一.初步認知fegin
相比ribbon更方便,簡化了代碼了,代理了請求。整合了hystrix。
二.寫一個feign
三.fegin的應用
pom
org.springframework.cloud
spring-cloud-starter-netflix-eureka-client
yml
server:
port: 8083
spring:
application:
name: feign-consumer
eureka:
client:
service-url:
defaultZone : http://127.0.0.1:10000/eureka/
feign:
hystrix:
enabled: true
hystrix:
command:
default:
execution:
isolation:
thread :
timeoutInMilliseconds: 100
客戶端注解
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
@SpringBootApplication
@EnableFeignClients //啟用feign,如果說需要啟動默認配置,就這么寫,如果需要覆蓋就寫成(@EnableFeignClients(defaultConfiguration = "FooConfiguartion.class"))
public class FeignDemoApplication {
public static void main(String[] args) {
SpringApplication.run(FeignDemoApplication.class, args);
}
}
import com.dn.feigndemo.fallback.HelloDemoFallback;
import com.dn.feigndemo.model.Teacher;
import feign.Body;
import feign.Param;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
@Component
@FeignClient(name="HELLOCLIENT",fallback = HelloDemoFallback.class)
public interface HelloDemoService {
@RequestMapping(value = "",method = RequestMethod.GET)
public Object getTeacher();
@RequestMapping(value = "/user",method = RequestMethod.GET)
public Teacher getByTeacher(@RequestParam("id")String id);
@Body("%7B\"orderNo\": \"{orderNo}\"%7D")
@RequestMapping(value = "/user",method = RequestMethod.POST)
public int addOrder(@Param("orderNo")String orderNo);
@RequestMapping(value = "/user",method = RequestMethod.POST)
public int addTeacher(@Param("orderNo")String orderNo);
}
1.模板 2.設置請求頭
package com.dn.feigndemo.service;
import com.dn.feigndemo.model.Teacher;
import feign.Headers;
import feign.Param;
import org.springframework.web.bind.annotation.RequestMapping;
@Headers("Accept:appliaction/json") //當前接口下,所有的feign請求都會被設置這個頭
public interface FeginHeaderDemo {
@Headers("Content-Type:appliaction/json")
@RequestMapping("")
int addOrder(Teacher teacher);
@Headers("Token:{token}")//設置動態值
@RequestMapping("")
Teacher getOrder(@Param("token")String token);
}
四.fegin的工作流程
五.fegin與hystrix的集成
六.fegin和ribbon的集成
文章來源: www.oschina.net,作者:這很耳東先生,版權歸原作者所有,如需轉載,請聯系作者。
原文鏈接:https://my.oschina.net/u/3728166/blog/3170798
總結
以上是生活随笔為你收集整理的微服务feignclient_微服务-(声明式调用feign)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iview的select联动_iview
- 下一篇: 5脚12v继电器接线图解_【电器元件00