从无到有搭建一个电商项目(五):商品微服务

创建商品微服务

购物平台核心就是商品,我们就来搭建一个商品的微服务,其中会包含对于商品相关的一系列内容的管理:

  • 商品分类管理
  • 品牌管理
  • 商品规格参数管理
  • 商品管理
  • 库存管理

1、商品微服务的结构设计
分析:考虑到将来会有其他系统来调用商品微服务中提供的接口,获取的接口数据,也需要对应的实体类来封装,因此也会用到接口中关联的实体类。因此这里我们需要使用聚合工程,将要提供的接口及相关实体类放到独立子工程中,以后别人引用的时候,只需要知道坐标即可。

我们在venom-item中创建两个子工程:

  • venom-item-interface:主要是对外暴露的接口及相关实体类
  • venom-item-service:所有业务逻辑及内部使用接口

调用关系图:
从无到有搭建一个电商项目(五):商品微服务_第1张图片
2、新建module,maven构建项目
从无到有搭建一个电商项目(五):商品微服务_第2张图片
3、项目包及项目名
从无到有搭建一个电商项目(五):商品微服务_第3张图片
4、保存位置
从无到有搭建一个电商项目(五):商品微服务_第4张图片
5、因为是聚合工程,可以把src目录删除,把项目打包方式设置为pom,pom.xml:



    
        venom
        com.venom.parent
        1.0.0-SNAPSHOT
    
    4.0.0

    com.venom.item
    venom-item
    1.0.0-SNAPSHOT
    pom


创建venom-item-interface子工程

1、在venom-item工程上点击右键,选择new --> module:
从无到有搭建一个电商项目(五):商品微服务_第5张图片
2、项目包及项目名,此时这个子工程的父工程就是venom-item
从无到有搭建一个电商项目(五):商品微服务_第6张图片
3、保存位置:注意子工程应该在venom-item下
从无到有搭建一个电商项目(五):商品微服务_第7张图片
4、其他的先放一下,以后要引入什么,或者写什么,再添加

创建venom-item-service子工程

1、和创建venom-item-interface子工程步骤一样,注意下项目名和存储位置即可,这里就不截图
2、venom-item-service子工程添加依赖,pom.xml:



    
        venom-item
        com.venom.item
        1.0.0-SNAPSHOT
    
    4.0.0

    com.venom.item
    venom-item-service
    1.0.0-SNAPSHOT

    
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-client
        
        
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
        
        
        
            tk.mybatis
            mapper-spring-boot-starter
        
        
        
            com.github.pagehelper
            pagehelper-spring-boot-starter
        
        
        
            org.springframework.boot
            spring-boot-starter-jdbc
        
        
        
            mysql
            mysql-connector-java
        
        
        
            com.venom.item
            venom-item-interface
            1.0.0-SNAPSHOT
        
        
        
            org.springframework.boot
            spring-boot-starter-actuator
        
    


3、编写启动类

@SpringBootApplication
@EnableDiscoveryClient
public class VenomItemServiceApplication {
    
    public static void main(String[] args) {
        SpringApplication.run(VenomItemServiceApplication.class,args);
    }
}

4、配置文件,application.yml:

server:
  port: 8081
spring:
  application:
    name: venom-item-service
  datasource:
    url: jdbc:mysql://localhost:3306/venom
    username: root
    password: 900415
    hikari:
      max-lifetime: 28830000 # 一个连接的生命时长(毫秒),超时而且没被使用则被释放(retired),缺省:30分钟,建议设置比数据库超时时长少30秒,参考MySQL wait_timeout参数(show variables like '%timeout%';)
      maximum-pool-size: 9 # 连接池中允许的最大连接数。缺省值:10;推荐的公式:((core_count * 2) + effective_spindle_count)
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka
    registry-fetch-interval-seconds: 5 # 获取服务列表,默认30s获取一次
  instance:
    lease-renewal-interval-in-seconds: 5 # 5秒钟发送一次心跳,服务续约的间隔,默认30s一次
    lease-expiration-duration-in-seconds: 10 # 10秒不发送就过期,服务时效时间,默认90s
    prefer-ip-address: true # 配置实例名称
    ip-address: 127.0.0.1
    instance-id: ${spring.application.name}:${server.port}

5、在Zuul网关服务中添加商品微服务的路由规则

zuul:
  prefix: /api
  routes:
    venom-item-service: /item/** # 商品微服务的映射路径

6、启动测试
分别启动venom-registry,venom-gateway,venom-item-service,访问localhost:10086
在这里插入图片描述
7、测试路由规则
我们添加了actuator的依赖,它就会为我们生成一系列的访问接口:


    org.springframework.boot
    spring-boot-starter-actuator

  • /info
  • /health
  • /refresh

  • 访问Eureka控制台:localhost:10086
    鼠标悬停在item-service上,会显示一个地址:127.0.0.1:8081/actuator/info,访问得到一个空的json,就可以确定访问的通venom-item-service
    接下来我们通过路由访问试试,根据路由规则,我们需要访问的地址是:http://127.0.0.1:10010/api/item/actuator/info
    从无到有搭建一个电商项目(五):商品微服务_第8张图片
    8、商品微服务暂时到此,后续会写功能

你可能感兴趣的:(项目)