Spring Cloud微服务架构实战之Consul注册中心02:consul入门案例

上一篇:Spring Cloud微服务架构实战之Consul注册中心01  可以点击回顾。接下来讲述consul入门案例。

获取springcloud实战项目详细视频教程,请留言联系。

 

1、创建项目

我们创建聚合项目来讲解 Consul,首先创建一个 pom 父工程。

Spring Cloud微服务架构实战之Consul注册中心02:consul入门案例_第1张图片

Spring Cloud微服务架构实战之Consul注册中心02:consul入门案例_第2张图片

Spring Cloud微服务架构实战之Consul注册中心02:consul入门案例_第3张图片

 

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 服务提供者的项目。

Spring Cloud微服务架构实战之Consul注册中心02:consul入门案例_第4张图片

Spring Cloud微服务架构实战之Consul注册中心02:consul入门案例_第5张图片

Spring Cloud微服务架构实战之Consul注册中心02:consul入门案例_第6张图片

Spring Cloud微服务架构实战之Consul注册中心02:consul入门案例_第7张图片

Spring Cloud微服务架构实战之Consul注册中心02:consul入门案例_第8张图片

 

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
     */
    List selectProductList();

}

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 List selectProductList() {
        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 List selectProductList() {
        return productService.selectProductList();
    }

}

 

该项目我们可以通过单元测试进行测试,也可以直接通过 url 使用 postman 或者浏览器来进行测试。

 

你可能感兴趣的:(Spring Cloud微服务架构实战之Consul注册中心02:consul入门案例)