上一篇:Spring Cloud微服务架构实战之Consul注册中心01 可以点击回顾。接下来讲述consul入门案例。
获取springcloud实战项目详细视频教程,请留言联系。
1、创建项目
我们创建聚合项目来讲解 Consul,首先创建一个 pom 父工程。
2、添加依赖
pom.xml
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"> 4.0.0 com.example consul-demo 1.0-SNAPSHOT org.springframework.boot spring-boot-starter-parent 2.2.4.RELEASE Hoxton.SR1 org.springframework.cloud spring-cloud-dependencies ${spring-cloud.version} pom import
3、服务提供者 service-provider
3.1 创建项目
在刚才的父工程下创建一个 service-provider
服务提供者的项目。
3.2 添加依赖
pom.xml
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 com.example service-provider 1.0-SNAPSHOT com.example consul-demo 1.0-SNAPSHOT org.springframework.cloud spring-cloud-starter-consul-discovery org.springframework.boot spring-boot-starter-actuator org.springframework.boot spring-boot-starter-web org.projectlombok lombok provided org.springframework.boot spring-boot-starter-test test org.junit.vintage junit-vintage-engine
3.3 配置文件
application.yml
server: port: 7070 # 端口 spring: application: name: service-provider # 应用名称 # 配置 Consul 注册中心 cloud: consul: # 注册中心的访问地址 host: localhost port: 8500 # 服务提供者信息 discovery: register: true # 是否需要注册 instance-id: ${spring.application.name}-01 # 注册实例 id(必须唯一) service-name: ${spring.application.name} # 服务名称 port: ${server.port} # 服务端口 prefer-ip-address: true # 是否使用 ip 地址注册 ip-address: ${spring.cloud.client.ip-address} # 服务请求 ip
3.4 实体类
Product.java
package com.example.pojo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; @Data @NoArgsConstructor @AllArgsConstructor public class Product implements Serializable { private Integer id; private String productName; private Integer productNum; private Double productPrice; }
3.5 编写服务
ProductService.java
package com.example.service; import com.example.pojo.Product; import java.util.List; /** * 商品服务 */ public interface ProductService { /** * 查询商品列表 * * @return */ ListselectProductList(); }
ProductServiceImpl.java
package com.example.service.impl; import com.example.pojo.Product; import com.example.service.ProductService; import org.springframework.stereotype.Service; import java.util.Arrays; import java.util.List; /** * 商品服务 */ @Service public class ProductServiceImpl implements ProductService { /** * 查询商品列表 * * @return */ @Override public ListselectProductList() { return Arrays.asList( new Product(1, "华为手机", 1, 5800D), new Product(2, "联想笔记本", 1, 6888D), new Product(3, "小米平板", 5, 2020D) ); } }
3.6 控制层
ProductController.java
package com.example.controller; import com.example.pojo.Product; import com.example.service.ProductService; 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("/product") public class ProductController { @Autowired private ProductService productService; /** * 查询商品列表 * * @return */ @GetMapping("/list") public ListselectProductList() { return productService.selectProductList(); } }
该项目我们可以通过单元测试进行测试,也可以直接通过 url 使用 postman 或者浏览器来进行测试。