1.搭建父工程
首先我们需要搭建一个父工程,打开IDEA,点击“新建”—>”项目”。选择“Spring Initializr”然后点击 下一步。

然后参考下面的内容,进行填写,填写完毕后,点击“下一步”。

然后来到下面这个界面,这个地方的选择一个是可以默认选择第一个,然后右面什么都不选,另外一种方式是可以选择创建Spring boot项目,然后删除掉多余部分。然后点击“下一步”。

然后下一步界面如下,点击 “完成”

如果出现下面这种情况,Project ‘org.springframework.boot.spring-boot-starter-parent:2.7.16-SNAPSHOT’not found,点击上面的链接解决。

然后添加必要依赖:
2.创建生产者
本文先创建一个生产者。
我们右击父工程,点击“新建”,“新模块”

然后选择 maven, 点击下一步

参考下面的图,填写必要内容,填写完毕后点击“完成”。

创建完毕后,整个项目结构如下:

我们在resources中创建配置文件application.yml,初始内容如下:
server:
port: 9001 #服务的端口
#spring相关配置
spring:
application:
name: service-provider1 #服务的名称
(注:这个地方并没有立即声明服务注册中心的地址,在后面的文章才会开始配置)
生产者的pom文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>s-cloud</artifactId>
<groupId>site.longkui</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>s-cloud-provider1</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
然后,我们参考下面代码手写一个启动类,名字是 sCloudProvider1,参考代码如下:
package site.longkui.scloudprovider1;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class sCloudProvider1 {
public static void main(String[] args) {
SpringApplication.run(sCloudProvider1.class, args);
}
}

然后,我们创建controller层(本文只为了测试,不创建impl、dao等),参考代码如下:
package site.longkui.scloudprovider1.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/user")
public class UserController {
@GetMapping("/getUser")
public String getUser() {
return "I`m provider 1 ,return user";
}
}

测试生产者:我们启动s-cloud-provider1,然后在浏览器里输入:
http://localhost:9001/user/getUser

生产者创建完毕。
3.创建消费者
创建消费者和前面比较类似,我们也是右击父工程,“新建”“新模块”创建一个消费者,名为 s-cloud-consumer1
然后resources文件下新建application.yml配置文件如下:
server:
port: 8001 #服务的端口
#spring相关配置
spring:
application:
name: service-consumer1 #服务的名称

消费者1的pom文件参考如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>s-cloud</artifactId>
<groupId>site.longkui</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>s-cloud-consumer1</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
然后编写启动类,
package site.longkui.consumer1;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class sCloudConsumer1 {
public static void main(String[] args) {
SpringApplication.run(sCloudConsumer1.class, args);
}
}

下面开始编写消费者接口,因为消费者要调用服务,所以要用到 RestTemplate,RestTemplate提供了多种便捷访问远程Http服务的方法,是一种简单便捷的访问restful服务的模板类,是spring提供的用于访问Rest服务的客户端模板工具集。
我们手写构建配置信息,创建一个config文件夹,然后参考下面内容进行填写。

package site.longkui.consumer1.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
@Configuration
public class ApplicationConfig {
/**
* 注册RestTemplate对象到Spring容器
*/
@Bean
public RestTemplate getRestTemplate() {
return new RestTemplate();
}
}
然後开始写消费者的controller

消费者参考代码如下:
package site.longkui.consumer1.controller;
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 org.springframework.web.client.RestTemplate;
@RestController
@RequestMapping("/consumer1")
public class userConsumerController {
@Autowired
private RestTemplate restTemplate; // 提供多种便捷访问远程http服务的方法,简单的restful服务模板
/**
* 消费者接口
*/
@GetMapping("/getUser")
public String getUser(){
//指出服务地址
String url="http://localhost:9001/user/getUser";
//返回值类型和我们的业务返回值一致
return restTemplate.getForObject(url, String.class);
}
}
然后把生产者和消费者都启动。

4.生产者消费者调用测试
我们访问消费者的地址。
http://localhost:8001/consumer1/getUser

可以看到,消费者调用生产者成功,返回生产者的数据。