增加 spring boot + feign 示例

This commit is contained in:
YunaiV
2020-05-17 20:19:55 +08:00
parent 5e36ed1faa
commit b6a863933c
10 changed files with 178 additions and 7 deletions

View File

@@ -42,11 +42,18 @@
<artifactId>feign-core</artifactId>
<version>11.0</version>
</dependency>
<!-- 引入 Feign GSON 拓展的依赖 -->
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-gson</artifactId>
<version>11.0</version>
</dependency>
<!-- 引入 Feign SpringMVC 拓展的依赖 -->
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-spring4</artifactId>
<version>11.0</version>
</dependency>
</dependencies>
</project>

View File

@@ -1,8 +1,11 @@
package cn.iocoder.springboot.lab58.feigndemo.config;
import cn.iocoder.springboot.lab58.feigndemo.feign.UserServiceFeignClient;
import cn.iocoder.springboot.lab58.feigndemo.feign.UserServiceFeignClient02;
import feign.Feign;
import feign.gson.GsonDecoder;
import feign.gson.GsonEncoder;
import feign.spring.SpringContract;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -12,8 +15,18 @@ public class FeignConfig {
@Bean
public UserServiceFeignClient userServiceFeignClient() {
return Feign.builder()
.encoder(new GsonEncoder())
.decoder(new GsonDecoder())
.target(UserServiceFeignClient.class, "http://127.0.0.1:18080"); // 目标地址
}
@Bean
public UserServiceFeignClient02 userServiceFeignClient02() {
return Feign.builder()
.encoder(new GsonEncoder())
.decoder(new GsonDecoder())
.contract(new SpringContract())
.target(UserServiceFeignClient02.class, "http://127.0.0.1:18080"); // 目标地址
}
}

View File

@@ -1,6 +1,7 @@
package cn.iocoder.springboot.lab58.feigndemo.controller;
import cn.iocoder.springboot.lab58.feigndemo.feign.UserServiceFeignClient;
import cn.iocoder.springboot.lab58.feigndemo.feign.request.UserAddRequest;
import cn.iocoder.springboot.lab58.feigndemo.feign.response.UserResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
@@ -38,4 +39,10 @@ public class DemoController {
return userServiceFeignClient.list(queryMap);
}
@GetMapping("/test03")
public Integer test03() {
return userServiceFeignClient.add(new UserAddRequest()
.setName("昵称").setGender(1));
}
}

View File

@@ -0,0 +1,46 @@
package cn.iocoder.springboot.lab58.feigndemo.controller;
import cn.iocoder.springboot.lab58.feigndemo.feign.UserServiceFeignClient02;
import cn.iocoder.springboot.lab58.feigndemo.feign.request.UserAddRequest;
import cn.iocoder.springboot.lab58.feigndemo.feign.response.UserResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("/demo02")
public class DemoController02 {
@Autowired
private UserServiceFeignClient02 userServiceFeignClient;
@GetMapping("/test01")
public UserResponse test01() {
return userServiceFeignClient.get(1);
// System.out.println("编号:" + user.getId());
// System.out.println("昵称:" + user.getName());
// System.out.println("性别:" + user.getGender());
}
@GetMapping("/test02A")
public List<UserResponse> test02A() {
return userServiceFeignClient.list("你猜", null);
}
// @GetMapping("/test02B")
// public List<UserResponse> test02B() {
// Map<String, Object> queryMap = new HashMap<>();
// queryMap.put("name", "昵称");
// return userServiceFeignClient.list(queryMap);
// }
@GetMapping("/test03")
public Integer test03() {
return userServiceFeignClient.add(new UserAddRequest()
.setName("昵称").setGender(1));
}
}

View File

@@ -1,13 +1,15 @@
package cn.iocoder.springboot.lab58.feigndemo.feign;
import cn.iocoder.springboot.lab58.feigndemo.feign.request.UserAddRequest;
import cn.iocoder.springboot.lab58.feigndemo.feign.response.UserResponse;
import feign.Param;
import feign.QueryMap;
import feign.RequestLine;
import feign.*;
import java.util.List;
import java.util.Map;
/**
* 基于 Contract.Default 默认契约
*/
public interface UserServiceFeignClient {
// 获得用户详情
@@ -21,4 +23,8 @@ public interface UserServiceFeignClient {
@RequestLine("GET /user/list")
List<UserResponse> list(@QueryMap Map<String, Object> queryMap);
@RequestLine("POST /user/add")
@Headers("Content-Type: application/json")
Integer add(UserAddRequest request);
}

View File

@@ -0,0 +1,28 @@
package cn.iocoder.springboot.lab58.feigndemo.feign;
import cn.iocoder.springboot.lab58.feigndemo.feign.request.UserAddRequest;
import cn.iocoder.springboot.lab58.feigndemo.feign.response.UserResponse;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
public interface UserServiceFeignClient02 {
// 获得用户详情
@GetMapping("/user/get")
UserResponse get(@RequestParam("id") Integer id);
@GetMapping("/user/list")
List<UserResponse> list(@RequestParam("name") String name,
@RequestParam("gender") Integer gender);
// @RequestLine("GET /user/list")
// List<UserResponse> list(@QueryMap Map<String, Object> queryMap);
@PostMapping(value = "/user/add", consumes = "application/json")
Integer add(@RequestBody UserAddRequest request);
}

View File

@@ -0,0 +1,28 @@
package cn.iocoder.springboot.lab58.feigndemo.feign.request;
/**
* User 添加 Request
*/
public class UserAddRequest {
private String name;
private Integer gender;
public String getName() {
return name;
}
public UserAddRequest setName(String name) {
this.name = name;
return this;
}
public Integer getGender() {
return gender;
}
public UserAddRequest setGender(Integer gender) {
this.gender = gender;
return this;
}
}

View File

@@ -1,10 +1,8 @@
package cn.iocoder.springboot.lab58.userservice.controller;
import cn.iocoder.springboot.lab58.userservice.request.UserAddRequest;
import cn.iocoder.springboot.lab58.userservice.response.UserResponse;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
@@ -30,4 +28,11 @@ public class UserController {
return users;
}
@PostMapping("/add")
public Integer add(@RequestBody UserAddRequest request) {
System.out.println("昵称:" + request.getName());
System.out.println("性别:" + request.getGender());
return 1;
}
}

View File

@@ -0,0 +1,28 @@
package cn.iocoder.springboot.lab58.userservice.request;
/**
* User 添加 Request
*/
public class UserAddRequest {
private String name;
private Integer gender;
public String getName() {
return name;
}
public UserAddRequest setName(String name) {
this.name = name;
return this;
}
public Integer getGender() {
return gender;
}
public UserAddRequest setGender(Integer gender) {
this.gender = gender;
return this;
}
}

View File

@@ -1,5 +1,8 @@
package cn.iocoder.springboot.lab58.userservice.response;
/**
* User 信息 Response
*/
public class UserResponse {
private Integer id;