mirror of
https://gitee.com/yudaocode/SpringBoot-Labs.git
synced 2026-09-03 05:53:54 +08:00
增加 spring boot + feign 示例
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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"); // 目标地址
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,8 @@
|
||||
package cn.iocoder.springboot.lab58.userservice.response;
|
||||
|
||||
/**
|
||||
* User 信息 Response
|
||||
*/
|
||||
public class UserResponse {
|
||||
|
||||
private Integer id;
|
||||
|
||||
Reference in New Issue
Block a user