电商项目专题(四)-商品微服务

既然是一个全品类的电商购物平台,那么核心自然就是商品。因此我们要搭建的第一个服务,就是商品微服务。其中会包含对于商品相关的一系列内容的管理,包括:

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

1.微服务的结构

因为与商品的品类相关,我们的工程命名为yigou-item.

需要注意的是,我们的yigou-item是一个微服务,那么将来肯定会有其它系统需要来调用服务中提供的接口,因此肯定也会使用到接口中关联的实体类。

因此这里我们需要使用聚合工程,将要提供的接口及相关实体类放到独立子工程中,以后别人引用的时候,只需要知道坐标即可。

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

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

调用关系如图所示:
电商项目专题(四)-商品微服务_第1张图片

2.创建父工程yigou-item

依然是使用maven构建:
电商项目专题(四)-商品微服务_第2张图片
保存位置:
电商项目专题(四)-商品微服务_第3张图片
不需要任何依赖,我们可以把项目打包方式设置为pom


<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>yigouartifactId>
        <groupId>com.yigou.parentgroupId>
        <version>1.0-SNAPSHOTversion>
    parent>
    <modelVersion>4.0.0modelVersion>

    <artifactId>yigou-itemartifactId>
    
    <packaging>pompackaging>


project>

3.创建yigou-item-interface

在yigou-item工程上点击右键,选择new > module:
电商项目专题(四)-商品微服务_第4张图片
电商项目专题(四)-商品微服务_第5张图片
注意:接下来填写的目录结构需要自己手动完成,保存到yigou-item下的yigou-item-interface目录中:
电商项目专题(四)-商品微服务_第6张图片
点击Finish完成。
此时的项目结构:
电商项目专题(四)-商品微服务_第7张图片

4.创建yigou-item-service

yigou-item-interface类似,我们选择在yigou-item上右键,新建module,然后填写项目信息:
电商项目专题(四)-商品微服务_第8张图片
填写存储位置,是在/yigou-item/yigou-item-service目录
电商项目专题(四)-商品微服务_第9张图片
点击Finish完成。

4.1.整个微服务结构

如图所示:
电商项目专题(四)-商品微服务_第10张图片
我们打开yigou-item的pom查看,会发现yigou-item-interfaceyigou-item-service都已经称为module了:


<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>yigouartifactId>
        <groupId>com.yigou.parentgroupId>
        <version>1.0-SNAPSHOTversion>
    parent>
    <modelVersion>4.0.0modelVersion>

    <artifactId>yigou-itemartifactId>
    
    <packaging>pompackaging>
    <modules>
        <module>yigou-item-interfacemodule>
        <module>yigou-item-servicemodule>
    modules>


project>

5.添加依赖

接下来我们给yigou-item-service中添加依赖:
思考一下我们需要什么?

- Eureka客户端
- web启动器
- mybatis启动器
- 通用mapper启动器
- 分页助手启动器
- 连接池,我们用默认的Hykira
- mysql驱动
- 千万不能忘了,我们自己也需要yigou-item-interface中的实体类

这些依赖,我们在顶级父工程:yigou中已经添加好了。所以直接引入即可:


<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>yigou-itemartifactId>
        <groupId>com.yigou.parentgroupId>
        <version>1.0-SNAPSHOTversion>
    parent>
    <modelVersion>4.0.0modelVersion>

    <artifactId>yigou-item-serviceartifactId>

    <dependencies>
        
        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>
        dependency>
        
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>
        
        <dependency>
            <groupId>org.mybatis.spring.bootgroupId>
            <artifactId>mybatis-spring-boot-starterartifactId>
            <version>${mybatis.starter.version}version>
        dependency>
        
        <dependency>
            <groupId>tk.mybatisgroupId>
            <artifactId>mapper-spring-boot-starterartifactId>
            <version>${mapper.starter.version}version>
        dependency>
        
        <dependency>
            <groupId>com.github.pagehelpergroupId>
            <artifactId>pagehelper-spring-boot-starterartifactId>
            <version>${pageHelper.starter.version}version>
        dependency>
        
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            <version>${mysql.version}version>
        dependency>

        <dependency>
            <groupId>com.yigou.parentgroupId>
            <artifactId>yigou-item-interfaceartifactId>
            <version>1.0-SNAPSHOTversion>
        dependency>

        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-actuatorartifactId>
        dependency>
    dependencies>


project>

yigou-item-interface中需要什么我们暂时不清楚,所以先不管。

6.编写启动和配置

在整个yigou-item工程中,只有yigou-item-service是需要启动的。因此在其中编写启动类即可:
电商项目专题(四)-商品微服务_第11张图片

/**
 * @author bruceliu
 * @create 2019-09-01 11:35
 * @description
 */
@SpringBootApplication
@EnableDiscoveryClient
public class YigouItemService {
    public static void main(String[] args) {
        SpringApplication.run(YigouItemService.class, args);
    }
}

然后是全局属性文件:

server:
  port: 8081
spring:
  application:
    name: item-service
  datasource:
    url: jdbc:mysql://localhost:3306/yigou
    username: root
    password: 123456
    hikari:
      maximum-pool-size: 30
      minimum-idle: 10
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka
  instance:
    lease-renewal-interval-in-seconds: 5 # 每隔5秒发送一次心跳
    lease-expiration-duration-in-seconds: 10 # 10秒不发送就过期
    prefer-ip-address: true
    ip-address: 127.0.0.1
    instance-id: ${spring.application.name}:${server.port}

7.添加商品微服务的路由规则

既然商品微服务已经创建,接下来肯定要添加路由规则到Zuul中,我们不使用默认的路由规则。

zuul:
  prefix: /api # 添加路由前缀
  retryable: true
  routes:
    item-service: /item/** # 将商品微服务映射到/item/**

8.启动测试

我们分别启动:yigou-registryyigou-api-gatewayyigou-item-service
电商项目专题(四)-商品微服务_第12张图片
查看Eureka面板:
在这里插入图片描述

9.通用工具模块

有些工具或通用的约定内容,我们希望各个服务共享,因此需要创建一个工具模块:ly-common
使用maven来构建module:
电商项目专题(四)-商品微服务_第13张图片
位置信息:
电商项目专题(四)-商品微服务_第14张图片
目前结构
电商项目专题(四)-商品微服务_第15张图片
目前还不需要编码。

你可能感兴趣的:(电商专题)