Skip to content

Commit b6a8639

Browse files
author
YunaiV
committed
增加 spring boot + feign 示例
1 parent 5e36ed1 commit b6a8639

File tree

10 files changed

+178
-7
lines changed

10 files changed

+178
-7
lines changed

lab-58/lab-58-feign-demo/pom.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,18 @@
4242
<artifactId>feign-core</artifactId>
4343
<version>11.0</version>
4444
</dependency>
45+
<!-- 引入 Feign GSON 拓展的依赖 -->
4546
<dependency>
4647
<groupId>io.github.openfeign</groupId>
4748
<artifactId>feign-gson</artifactId>
4849
<version>11.0</version>
4950
</dependency>
51+
<!-- 引入 Feign SpringMVC 拓展的依赖 -->
52+
<dependency>
53+
<groupId>io.github.openfeign</groupId>
54+
<artifactId>feign-spring4</artifactId>
55+
<version>11.0</version>
56+
</dependency>
5057
</dependencies>
5158

5259
</project>

lab-58/lab-58-feign-demo/src/main/java/cn/iocoder/springboot/lab58/feigndemo/config/FeignConfig.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
package cn.iocoder.springboot.lab58.feigndemo.config;
22

33
import cn.iocoder.springboot.lab58.feigndemo.feign.UserServiceFeignClient;
4+
import cn.iocoder.springboot.lab58.feigndemo.feign.UserServiceFeignClient02;
45
import feign.Feign;
56
import feign.gson.GsonDecoder;
7+
import feign.gson.GsonEncoder;
8+
import feign.spring.SpringContract;
69
import org.springframework.context.annotation.Bean;
710
import org.springframework.context.annotation.Configuration;
811

@@ -12,8 +15,18 @@ public class FeignConfig {
1215
@Bean
1316
public UserServiceFeignClient userServiceFeignClient() {
1417
return Feign.builder()
18+
.encoder(new GsonEncoder())
1519
.decoder(new GsonDecoder())
1620
.target(UserServiceFeignClient.class, "http://127.0.0.1:18080"); // 目标地址
1721
}
1822

23+
@Bean
24+
public UserServiceFeignClient02 userServiceFeignClient02() {
25+
return Feign.builder()
26+
.encoder(new GsonEncoder())
27+
.decoder(new GsonDecoder())
28+
.contract(new SpringContract())
29+
.target(UserServiceFeignClient02.class, "http://127.0.0.1:18080"); // 目标地址
30+
}
31+
1932
}

lab-58/lab-58-feign-demo/src/main/java/cn/iocoder/springboot/lab58/feigndemo/controller/DemoController.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package cn.iocoder.springboot.lab58.feigndemo.controller;
22

33
import cn.iocoder.springboot.lab58.feigndemo.feign.UserServiceFeignClient;
4+
import cn.iocoder.springboot.lab58.feigndemo.feign.request.UserAddRequest;
45
import cn.iocoder.springboot.lab58.feigndemo.feign.response.UserResponse;
56
import org.springframework.beans.factory.annotation.Autowired;
67
import org.springframework.web.bind.annotation.GetMapping;
@@ -38,4 +39,10 @@ public List<UserResponse> test02B() {
3839
return userServiceFeignClient.list(queryMap);
3940
}
4041

42+
@GetMapping("/test03")
43+
public Integer test03() {
44+
return userServiceFeignClient.add(new UserAddRequest()
45+
.setName("昵称").setGender(1));
46+
}
47+
4148
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package cn.iocoder.springboot.lab58.feigndemo.controller;
2+
3+
import cn.iocoder.springboot.lab58.feigndemo.feign.UserServiceFeignClient02;
4+
import cn.iocoder.springboot.lab58.feigndemo.feign.request.UserAddRequest;
5+
import cn.iocoder.springboot.lab58.feigndemo.feign.response.UserResponse;
6+
import org.springframework.beans.factory.annotation.Autowired;
7+
import org.springframework.web.bind.annotation.GetMapping;
8+
import org.springframework.web.bind.annotation.RequestMapping;
9+
import org.springframework.web.bind.annotation.RestController;
10+
11+
import java.util.List;
12+
13+
@RestController
14+
@RequestMapping("/demo02")
15+
public class DemoController02 {
16+
17+
@Autowired
18+
private UserServiceFeignClient02 userServiceFeignClient;
19+
20+
@GetMapping("/test01")
21+
public UserResponse test01() {
22+
return userServiceFeignClient.get(1);
23+
// System.out.println("编号:" + user.getId());
24+
// System.out.println("昵称:" + user.getName());
25+
// System.out.println("性别:" + user.getGender());
26+
}
27+
28+
@GetMapping("/test02A")
29+
public List<UserResponse> test02A() {
30+
return userServiceFeignClient.list("你猜", null);
31+
}
32+
33+
// @GetMapping("/test02B")
34+
// public List<UserResponse> test02B() {
35+
// Map<String, Object> queryMap = new HashMap<>();
36+
// queryMap.put("name", "昵称");
37+
// return userServiceFeignClient.list(queryMap);
38+
// }
39+
40+
@GetMapping("/test03")
41+
public Integer test03() {
42+
return userServiceFeignClient.add(new UserAddRequest()
43+
.setName("昵称").setGender(1));
44+
}
45+
46+
}

lab-58/lab-58-feign-demo/src/main/java/cn/iocoder/springboot/lab58/feigndemo/feign/UserServiceFeignClient.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
package cn.iocoder.springboot.lab58.feigndemo.feign;
22

3+
import cn.iocoder.springboot.lab58.feigndemo.feign.request.UserAddRequest;
34
import cn.iocoder.springboot.lab58.feigndemo.feign.response.UserResponse;
4-
import feign.Param;
5-
import feign.QueryMap;
6-
import feign.RequestLine;
5+
import feign.*;
76

87
import java.util.List;
98
import java.util.Map;
109

10+
/**
11+
* 基于 Contract.Default 默认契约
12+
*/
1113
public interface UserServiceFeignClient {
1214

1315
// 获得用户详情
@@ -21,4 +23,8 @@ List<UserResponse> list(@Param("name") String name,
2123
@RequestLine("GET /user/list")
2224
List<UserResponse> list(@QueryMap Map<String, Object> queryMap);
2325

26+
@RequestLine("POST /user/add")
27+
@Headers("Content-Type: application/json")
28+
Integer add(UserAddRequest request);
29+
2430
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package cn.iocoder.springboot.lab58.feigndemo.feign;
2+
3+
import cn.iocoder.springboot.lab58.feigndemo.feign.request.UserAddRequest;
4+
import cn.iocoder.springboot.lab58.feigndemo.feign.response.UserResponse;
5+
import org.springframework.web.bind.annotation.GetMapping;
6+
import org.springframework.web.bind.annotation.PostMapping;
7+
import org.springframework.web.bind.annotation.RequestBody;
8+
import org.springframework.web.bind.annotation.RequestParam;
9+
10+
import java.util.List;
11+
12+
public interface UserServiceFeignClient02 {
13+
14+
// 获得用户详情
15+
@GetMapping("/user/get")
16+
UserResponse get(@RequestParam("id") Integer id);
17+
18+
@GetMapping("/user/list")
19+
List<UserResponse> list(@RequestParam("name") String name,
20+
@RequestParam("gender") Integer gender);
21+
22+
// @RequestLine("GET /user/list")
23+
// List<UserResponse> list(@QueryMap Map<String, Object> queryMap);
24+
25+
@PostMapping(value = "/user/add", consumes = "application/json")
26+
Integer add(@RequestBody UserAddRequest request);
27+
28+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package cn.iocoder.springboot.lab58.feigndemo.feign.request;
2+
3+
/**
4+
* User 添加 Request
5+
*/
6+
public class UserAddRequest {
7+
8+
private String name;
9+
private Integer gender;
10+
11+
public String getName() {
12+
return name;
13+
}
14+
15+
public UserAddRequest setName(String name) {
16+
this.name = name;
17+
return this;
18+
}
19+
20+
public Integer getGender() {
21+
return gender;
22+
}
23+
24+
public UserAddRequest setGender(Integer gender) {
25+
this.gender = gender;
26+
return this;
27+
}
28+
}

lab-58/lab-58-user-service/src/main/java/cn/iocoder/springboot/lab58/userservice/controller/UserController.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
package cn.iocoder.springboot.lab58.userservice.controller;
22

3+
import cn.iocoder.springboot.lab58.userservice.request.UserAddRequest;
34
import cn.iocoder.springboot.lab58.userservice.response.UserResponse;
4-
import org.springframework.web.bind.annotation.GetMapping;
5-
import org.springframework.web.bind.annotation.RequestMapping;
6-
import org.springframework.web.bind.annotation.RequestParam;
7-
import org.springframework.web.bind.annotation.RestController;
5+
import org.springframework.web.bind.annotation.*;
86

97
import java.util.ArrayList;
108
import java.util.List;
@@ -30,4 +28,11 @@ public List<UserResponse> list(@RequestParam(value = "name", required = false) S
3028
return users;
3129
}
3230

31+
@PostMapping("/add")
32+
public Integer add(@RequestBody UserAddRequest request) {
33+
System.out.println("昵称:" + request.getName());
34+
System.out.println("性别:" + request.getGender());
35+
return 1;
36+
}
37+
3338
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package cn.iocoder.springboot.lab58.userservice.request;
2+
3+
/**
4+
* User 添加 Request
5+
*/
6+
public class UserAddRequest {
7+
8+
private String name;
9+
private Integer gender;
10+
11+
public String getName() {
12+
return name;
13+
}
14+
15+
public UserAddRequest setName(String name) {
16+
this.name = name;
17+
return this;
18+
}
19+
20+
public Integer getGender() {
21+
return gender;
22+
}
23+
24+
public UserAddRequest setGender(Integer gender) {
25+
this.gender = gender;
26+
return this;
27+
}
28+
}

lab-58/lab-58-user-service/src/main/java/cn/iocoder/springboot/lab58/userservice/response/UserResponse.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package cn.iocoder.springboot.lab58.userservice.response;
22

3+
/**
4+
* User 信息 Response
5+
*/
36
public class UserResponse {
47

58
private Integer id;

0 commit comments

Comments
 (0)