三、moyu-alibaba项目初始化

项目初始化

1. 项目结构

在这里插入图片描述

目录如下:
在这里插入图片描述
解释:

  1. moyu-bom 负责管理依赖
  2. moyu-common 公共依赖部分
  3. moyu-auth 授权服务
  4. moyu-gateway 网关服务
  5. moyu-modules 业务服务模块集合
  6. moyu-product 商品业务服务模块
  7. moyu-product-api 商品业务服务模块controller相关接口及相关实体类(controller实现fegin接口)
  8. moyu-product-biz 商品业务服务模块具体实现
  9. moyu-order 订单业务服务模块
  10. moyu-order-api 订单业务服务模块controller相关接口及相关实体类(controller实现fegin接口)
  11. moyu-order-biz 订单业务服务模块具体实现
  12. moyu-account 账户服务模块
  13. moyu-account-api 账户业务服务模块controller相关接口及相关实体类(controller实现fegin接口)
  14. moyu-account-biz 账户业务服务模块具体实现

2. 技术选型

maven:3.3.9
数据库:MySQL 5.7
持久层: SpingData Jpa
其他: SpringCloud Alibaba 技术栈


3. maven依赖

代码如下(示例):

1. 父工程: moyu-alibaba的pom.xml

<?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">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.ymh</groupId>
  <artifactId>moyu-alibaba</artifactId>
  <packaging>pom</packaging>
  <version>1.0.0</version>
  <modules>
    <module>moyu-bom</module>
    <module>moyu-common</module>
    <module>moyu-modules</module>
    <module>moyu-gateway</module>
    <module>moyu-auth</module>
  </modules>

  <properties>
    <java.version>1.8</java.version>
    <spring-boot.version>2.2.5.RELEASE</spring-boot.version>
    <spring-cloud-alibaba.version>2.2.1.RELEASE</spring-cloud-alibaba.version>
    <spring-cloud.version>Hoxton.SR3</spring-cloud.version>
    <moyu-bom.version>1.0.0</moyu-bom.version>
    <encoding>UTF-8</encoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>com.ymh</groupId>
        <artifactId>moyu-bom</artifactId>
        <version>${moyu-bom.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>${spring-boot.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>${spring-cloud.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-alibaba-dependencies</artifactId>
        <version>${spring-cloud-alibaba.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <scope>compile</scope>
    </dependency>
  </dependencies>
</project>

在父pom中我们为全局引入test 和lombok简化我们的开发,大家可以看情况添加。

2. 版本管理模块moyu-boom的pom.xml

<?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">

  <groupId>com.ymh</groupId>
  <artifactId>moyu-bom</artifactId>
  <packaging>pom</packaging>
  <version>1.0.0</version>
  <modelVersion>4.0.0</modelVersion>

  <properties>
    <mysql.version>5.1.47</mysql.version>
    <moyu.version>1.0.0</moyu.version>
    <swagger.version>3.0.0</swagger.version>
    <collections4.version>4.4</collections4.version>
  </properties>
  <dependencyManagement>
    <dependencies>
      <!--moyu 公共包 版本-->
      <dependency>
        <groupId>com.ymh</groupId>
        <artifactId>moyu-common</artifactId>
        <version>${moyu.version}</version>
      </dependency>

      <dependency>
        <groupId>com.ymh</groupId>
        <artifactId>moyu-account-api</artifactId>
        <version>${moyu.version}</version>
      </dependency>

      <dependency>
        <groupId>com.ymh</groupId>
        <artifactId>moyu-order-api</artifactId>
        <version>${moyu.version}</version>
      </dependency>

      <dependency>
        <groupId>com.ymh</groupId>
        <artifactId>moyu-product-api</artifactId>
        <version>${moyu.version}</version>
      </dependency>

      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-collections4</artifactId>
        <version>${collections4.version}</version>
      </dependency>

      <!--database-->
      <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${mysql.version}</version>
      </dependency>
      <!--swagger-->
      <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-boot-starter</artifactId>
        <version>${swagger.version}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>
</project>

在moyu-boom中我们定义我们需要引入jar的版本号,基于我们自定义模块的版本,moyu-boom 在父pom中被依赖进来。

3. moyu-common模块

<?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>moyu-alibaba</artifactId>
    <groupId>com.ymh</groupId>
    <version>1.0.0</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>
  <packaging>jar</packaging>

  <artifactId>moyu-common</artifactId>
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-json</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-collections4</artifactId>
    </dependency>
  </dependencies>
</project>

4. moyu-modules模块

<?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>moyu-alibaba</artifactId>
    <groupId>com.ymh</groupId>
    <version>1.0.0</version>
  </parent>
  <artifactId>moyu-modules</artifactId>
  <modelVersion>4.0.0</modelVersion>
  <packaging>pom</packaging>

  <modules>
    <module>moyu-account</module>
    <module>moyu-order</module>
    <module>moyu-product</module>
  </modules>
<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
  </dependency>
  <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
  </dependency>
</dependencies>
</project>

5. moyu-order模块

moyu-account,moyu-product类似。

<?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>moyu-modules</artifactId>
    <groupId>com.ymh</groupId>
    <version>1.0.0</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>

  <artifactId>moyu-order</artifactId>
  <packaging>pom</packaging>
  <modules>
    <module>moyu-order-api</module>
    <module>moyu-order-biz</module>
  </modules>
</project>
1. moyu-order-api模块
  • pom.xml
<?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>moyu-order</artifactId>
    <groupId>com.ymh</groupId>
    <version>1.0.0</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>

  <artifactId>moyu-order-api</artifactId>

  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>

    <dependency>
      <groupId>com.ymh</groupId>
      <artifactId>moyu-common</artifactId>
    </dependency>
  </dependencies>
</project>
  • 编码

在此模块我们放入order需要提供fegin的接口以及相关的实体类
在这里插入图片描述
OrderDTO 实体类:

package com.ymh.domain;

import com.fasterxml.jackson.annotation.JsonIgnore;
import java.math.BigDecimal;
import lombok.Data;
import lombok.experimental.Accessors;
import lombok.extern.slf4j.Slf4j;

@Data
@Slf4j
@Accessors(chain = true)
public class OrderDTO {
  @JsonIgnore
  private Integer id;
  @JsonIgnore
  private String orderNo;

  private String accountCode;

  private String productCode;

  private Integer count;

  @JsonIgnore
  private BigDecimal amount;

  private BigDecimal price;
}

OrderFeignfegin接口类

package com.ymh.feign;


import com.ymh.common.domain.ResultData;
import com.ymh.domain.OrderDTO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

/**
 * @author: 13590
 * @date: 2020/10/27 19:36
 * @description:
 */
@FeignClient("order-service")
public interface OrderFeign {

  @PostMapping("/create")
  ResultData<OrderDTO> create(@RequestBody OrderDTO orderDTO);
}
2. moyu-order-biz模块
  • pom.xml
<?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>moyu-order</artifactId>
    <groupId>com.ymh</groupId>
    <version>1.0.0</version>
  </parent>
  <modelVersion>4.0.0</modelVersion>

  <artifactId>moyu-order-biz</artifactId>

  <dependencies>
    <dependency>
      <groupId>com.ymh</groupId>
      <artifactId>moyu-common</artifactId>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
    </dependency>

    <dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>

    <dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>

    <dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
    </dependency>

    <dependency>
      <groupId>io.springfox</groupId>
      <artifactId>springfox-boot-starter</artifactId>
    </dependency>

    <dependency>
      <groupId>com.ymh</groupId>
      <artifactId>moyu-order-api</artifactId>
    </dependency>

    <dependency>
      <groupId>com.ymh</groupId>
      <artifactId>moyu-product-api</artifactId>
    </dependency>

    <dependency>
      <groupId>com.ymh</groupId>
      <artifactId>moyu-account-api</artifactId>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
          <executable>true</executable>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
  • 编码
    在这里插入图片描述
    OrderDO实体类
package com.ymh.domain;

import java.math.BigDecimal;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import lombok.Data;
import lombok.experimental.Accessors;

/**
 * @author: 13590
 * @date: 2020/10/26 21:07
 * @description:
 */

@Data
@Accessors(chain = true)
@Entity(name = "`order`")
public class OrderDO {

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Integer id;

  @Column(length = 64)
  private String orderNo;

  @Column(length = 32)
  private String accountCode;

  @Column(length = 32)
  private String productCode;

  private Integer count;

  private BigDecimal amount;
}

OrderDAO类如下:

package com.ymh.dao;

import com.ymh.domain.OrderDO;
import org.springframework.data.jpa.repository.JpaRepository;

/**
 * @author: 13590
 * @date: 2020/10/26 21:11
 * @description:
 */
public interface OrderDao extends JpaRepository<OrderDO, Integer> {

}

到此为止我们前期所需要的定义pom已经基本完成,其他模块的pom我们使用到了再来定义。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值