1. 程式人生 > 實用技巧 >十八般武藝玩轉GaussDB(DWS)效能調優:SQL改寫

十八般武藝玩轉GaussDB(DWS)效能調優:SQL改寫

Feign

簡介

  • Feign是宣告式的web service客戶端,他讓微服務之間的呼叫更加簡單了,類似於Controller呼叫service.SPring Cloud集成了Ribbon和Rureka,可在使用Feign時提供負載均衡的Http客戶端。
  • 主要是社群,習慣面向介面程式設計。這個是很多開發人員的規範.呼叫微服務訪問兩種方法。
    1 . 微服務名字 [ribbon]
    2 . 介面好註解 [feign]
  • 前面在使用Ribbon+RestTemplate時,利用RestTemplate對Http請求的封裝處理,形成了一套
    模板化的呼叫方法。但是在實際開發中,由於對服務依賴的呼叫可能不止一處,處處一個介面會被多處呼叫,所以通常都會針對每個微服務自行發呢改裝一些客戶端類來包裝這些依賴服務的呼叫。所以,Feign在此基礎上做了進一步封裝,有他來幫助我們定義和實現依賴服務介面的定義,在Feign的實現下,我們只需要建立一個介面並使用註解的方式來配置它。
    即可完成度服務提供方的介面繫結,簡化了Spring Cloud Ribbon時,自動發呢改裝服務呼叫客戶端的開發量。

使用

修改API介面

    1. 在之前API介面pom.xml新增Feign的依賴
 <!--feign-->
  <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-openfeign</artifactId>
  </dependency>
    1. 新增Service包,並且新增介面,並與之前服務提供者的controller介面一致,並指定服務名
@FeignClient(value = "provider-person-8001")
public interface PersonService {
    @GetMapping("/person/{id}")
    Person getPersonById(@PathVariable("id") Integer id);
    @GetMapping("/person/getall")
    List<Person> personAll();
    @PostMapping("person/add")
    void addPerson(Person person);
}
    1. 在服務消費者中修改controller
@RestController
public class PersonController {

    @Autowired(required = false) //沒注入,編譯過不去,不影響使用
    PersonService personService;

    @GetMapping("/person/all")
    public List<Person> getall(){
        return personService.personAll();
    }

    @GetMapping("/person/addpe")
    public Void getall(@RequestParam("name") String name, @RequestParam("age")int age){
        Person person = new Person();
        person.setName(name);
        person.setAge(age);
        person.setPerm("user:add");
        personService.addPerson(person);
        return null;
    }

    @GetMapping("person/get/{id}")
    public Person getall(@PathVariable("id") int id){
        return personService.getPersonById(id);
    }
}
    1. 指定掃描的包
@SpringBootApplication
@EnableEurekaClient //為Eureka客戶端
@EnableFeignClients(basePackages = {"cn.lzm.springcloud"}) //指定掃描的包
public class PersonConsumerApplication_Feign {
    public static void main(String[] args) {
        SpringApplication.run(PersonConsumerApplication_Feign.class,args);
    }
}