一、生产端
1.pom
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.2</version>
<relativePath/>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.26</version>
<optional>true</optional>
</dependency>
</dependencies>
2.yml
application.yml 文件
server:
port: 8081
3.java
@Setter
@Getter
public class RemoteRequest {
private Integer id;
private String name;
}
@Getter
@Builder
public class RemoteResponse {
private Integer id;
private String name;
}
@RestController
public class IndexController {
@GetMapping("/remote")
public String remote() {
System.out.println("- - - remote - - - 8081");
return "this is simple";
}
// curl -H "Content-Type: text/plain;charset=UTF-8" -X GET "http://localhost:8081/remoteGet?name=zhang1"
@GetMapping("/remoteGet")
public String remoteGet(@RequestParam("name") String name) {
System.out.println("- - - remoteGet - - - 8081");
System.out.println(name);
return name;
}
// curl -H "Content-Type: application/json" -X POST -d '{"id": "1", "name": "zhang1"}' "http://localhost:8081/remotePost"
@PostMapping("/remotePost")
public RemoteResponse remotePost(@RequestBody RemoteRequest request) {
System.out.println("- - - remotePost - - - 8081");
System.out.println(request);
return RemoteResponse.builder()
.id(request.getId() + 1)
.name(request.getName() + "1")
.build();
}
}
@SpringBootApplication
public class Boot1 {
public static void main(String[] args) {
SpringApplication.run(Boot1.class, args);
}
}
二、消费端
1.pom
引入 spring-cloud-starter-openfeign
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.2</version>
<relativePath/>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>3.1.5</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.26</version>
<optional>true</optional>
</dependency>
</dependencies>
2.yml
application.yml 文件
server:
port: 8082
customer:
url: http://127.0.0.1:8081/
3.java
@Getter
@Builder
public class RemoteRequest {
private Integer id;
private String name;
}
@Setter
@Getter
public class RemoteResponse {
private Integer id;
private String name;
}
@FeignClient(name = "feignCustomerService", url = "${customer.url}")
public interface CustomerService {
@GetMapping(value = "/remote")
String remote();
@GetMapping(value = "/remoteGet")
String remoteGet(@RequestParam("name") String name);
@PostMapping(value = "/remotePost")
RemoteResponse remotePost(@RequestBody RemoteRequest orderUpdateDTO);
}
@RestController
public class IndexController {
@Autowired
private CustomerService service;
@GetMapping("/remote")
public String remote() {
String response = service.remote();
System.out.println("- - - remoteGet - - - 8082");
System.out.println(response);
return response;
}
@GetMapping("/remoteGet")
public String remoteGet() {
String response = service.remoteGet("zhang1");
System.out.println("- - - remoteGet - - - 8082");
System.out.println(response);
return response;
}
@GetMapping("/remotePost")
public RemoteResponse remotePost() {
RemoteRequest request = RemoteRequest.builder()
.id(1)
.name("zhangsan")
.build();
RemoteResponse response = service.remotePost(request);
System.out.println("- - - remoteGet - - - 8082");
System.out.println(response);
return response;
}
}
@EnableFeignClients
@SpringBootApplication
public class Boot2 {
public static void main(String[] args) {
SpringApplication.run(Boot2.class, args);
}
}