springcloud 整合 openfeign的方法

一、openfeign簡介

Feign是Nefix開發的聲明式、模塊化的Http客戶端。Feign可以幫助我們更快捷、優雅地調用Http Api。

在springclouid中使用 feign非常簡單  –創建一個接口,並在接口中添加一些註解,代碼就完成瞭,Feign支持多種註解 

openFeign 是springcloud對Feign進行瞭增強,使得Feign支持瞭springmvc的註解,並整合瞭Ribbon和Eureka,從而讓Feign的使用更加方便

二、使用

1、依賴

 <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--服務註冊與發現-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <dependency>
            <groupId>com.sofwin</groupId>
            <artifactId>springEntity</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

2、配置文件 

加入到nacos的服務中

server:
  port: 7000
spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
        heart-beat-interval: 1000
  application:
    name: openFeign

 3、啟動類

package com.sofwin;
 
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
 
/**
 * @author : wentao
 * @version : 1.0
 */
@SpringBootApplication
//開啟服務註冊與發現
@EnableDiscoveryClient
//開啟Feign
@EnableFeignClients
public class App {
    public static void main(String[]args){
        SpringApplication.run(App.class,args);
    }
}

 4、接口

package com.sofwin.service;
 
import com.sofwin.pojo.User;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.*;
 
import java.util.List;
 
/**
 * @author : wentao
 * @version : 1.0
 */
//寫的是服務端的名稱 
@FeignClient("nacos-previder")
public interface UserService {
 
    @GetMapping("/user/data")
    String getUserName();
 
    @GetMapping("/user/info/{msg}")
    //這裡註意瞭 這個註意@PathVariable 一定要添加name或者value屬性
    String infoResful(@PathVariable(name = "msg") String msg);
 
    @GetMapping("/user/data5")
    //這裡註意瞭 調用遠程服務必須使用@RequesParam註解 並且名字與遠程服務的參數名相同
    String simpleParam(@RequestParam("userName11") String userName,@RequestParam("pwd") String pwd);
 
    //其實openFeign默認就是json的格式  這裡是為瞭規范
    @PostMapping("user/data6")
    User getUser (@RequestBody User user);
    @DeleteMapping("user/data7")
    User getUser2 (@RequestBody User user);
    //或者我們就可以使用一個註解 將json格式改為form表單的格式發送到遠程服務中
    //然後遠程不用寫@RequestBody
    @PostMapping("user/data8")
    User getUser3 (@SpringQueryMap User user);
 
    //集合
    @PostMapping("user/data9")
    List<User> getList(@RequestBody User user);
}

接口中定義遠程服務中的的請求   

使用 @FeignClien的註解    名稱是遠程服務的名稱

5、controller

package com.sofwin.controller;
 
import com.sofwin.pojo.User;
import com.sofwin.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
 
import java.util.List;
 
/**
 * @author : wentao
 * @version : 1.0
 */
@RestController
@RequestMapping("/role")
public class RoleController {
 
    @Autowired
    private UserService userService;
    @GetMapping("/data")
    public String data(){
        String userName = userService.getUserName();
        return userName;
    }
    //Resful風格
    @GetMapping("data1")
    public  String infoResful(String msg){
        String s = userService.infoResful(msg);
        return s;
    }
    //簡單類型的請求參數
    @GetMapping("/data2")
    public  String simpleParam(String userName,String pwd){
        return  userService.simpleParam(userName,pwd);
    }
    //自定義   json字符串 或者表單形式
    @PostMapping("/data3")
    public  User getUser(User user){
        return  userService.getUser(user);
    }
    @DeleteMapping("/data4")
    public  User getUser2(User user){
        return  userService.getUser2(user);
    }
    @PostMapping("/data5")
    public  User getUser3(User user){
        return  userService.getUser3(user);
    }
    //返回結果為集合類型
    @PostMapping("/data6")
    public List<User> getList(User user){
        return  userService.getList(user);
    }
}

註意:

//其實openFeign默認就是json的格式

到此這篇關於springcloud 整合 openfeign的文章就介紹到這瞭,更多相關springcloud 整合 openfeign內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: