搭建项目前,先看看项目的介绍与架构:文档:乐优商城介绍与架构

目录

一、技术选型

1.前端技术:

2.后端技术:

二、开发环境

三、域名

四、搭建后台环境

1.创建一个新项目工程

2.引入相关依赖配置:

3.创建相关模块

 (1)搭建Eureka注册中心

 (2)搭建Zuul网关模块

 (3)搭建商品微服务

 (4)搭建一个通用工具模块


一、技术选型

1.前端技术:

  • 基础的HTML、CSS、JavaScript(基于ES6标准)

  • JQuery

  • Vue.js 2.0以及基于Vue的框架:Vuetify(UI框架)

  • 前端构建工具:WebPack

  • 前端安装包工具:NPM

  • Vue脚手架:Vue-cli

  • Vue路由:vue-router

  • ajax框架:axios

  • 基于Vue的富文本框架:quill-editor

2.后端技术:

  • 基础的SpringMVC、Spring 5.x和MyBatis3

  • Spring Boot 2.0.6版本

  • Spring Cloud 版本 Finchley.SR2

  • Redis-4.0

  • RabbitMQ-3.4

  • Elasticsearch-6.3

  • nginx-1.14.2

  • FastDFS - 5.0.8

  • MyCat

  • Thymeleaf

  • mysql 5.6

二、开发环境

为了保证开发环境的统一,请按如下环境来配置:

  • IDE:我们使用Idea 2017.3 版本

  • JDK:统一使用JDK1.8

  • 项目构建:maven3.3.9以上版本即可(3.5.2)

  • 版本控制工具:git

三、域名

开发的过程中,为了保证以后的生产、测试环境统一。尽量都采用域名来访问项目。

一级域名:www.leyou.com,leyou.com leyou.cn

二级域名:manage.leyou.com/item , api.leyou.com

可以通过switchhost工具,来修改自己的host对应的地址,只要把这些域名指向127.0.0.1,那么用localhost的效果是完全一样的。

这个后面再去修改,先知道一下就可以。

 

四、搭建后台环境

1.创建一个新项目工程

 

2.引入相关依赖配置:

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.leyou.parent</groupId>
    <artifactId>leyou</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <name>leyou</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <spring-cloud.version>Finchley.SR2</spring-cloud.version>
        <mybatis.starter.version>1.3.2</mybatis.starter.version>
        <mapper.starter.version>2.0.2</mapper.starter.version>
        <druid.starter.version>1.1.9</druid.starter.version>
        <mysql.version>5.1.32</mysql.version>
        <pageHelper.starter.version>1.2.3</pageHelper.starter.version>
        <leyou.latest.version>1.0.0-SNAPSHOT</leyou.latest.version>
        <fastDFS.client.version>1.26.1-RELEASE</fastDFS.client.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <!-- springCloud -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!-- mybatis启动器 -->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>${mybatis.starter.version}</version>
            </dependency>
            <!-- 通用Mapper启动器 -->
            <dependency>
                <groupId>tk.mybatis</groupId>
                <artifactId>mapper-spring-boot-starter</artifactId>
                <version>${mapper.starter.version}</version>
            </dependency>
            <!-- 分页助手启动器 -->
            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper-spring-boot-starter</artifactId>
                <version>${pageHelper.starter.version}</version>
            </dependency>
            <!-- mysql驱动 -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.version}</version>
            </dependency>
            <!--FastDFS客户端-->
            <dependency>
                <groupId>com.github.tobato</groupId>
                <artifactId>fastdfs-client</artifactId>
                <version>${fastDFS.client.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

 

3.创建相关模块

 (1)搭建Eureka注册中心

①创建工程

②引入依赖

leyou-registry 的 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>leyou</artifactId>
        <groupId>com.leyou.parent</groupId>
        <version>1.0.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.leyou.registry</groupId>
    <artifactId>leyou-registry</artifactId>
    <version>1.0.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>

</project>

③覆盖默认配置

 

server:
  port: 10086 #注册中心端口号
spring:
  application:
    name: leyou-registry #给这个服务取的名字
eureka:
  client:
    service-url:
      defaultZone: http://localhost:10086/eureka #注册中心路径地址
    server:
      enable-self-preservation: false #关闭自我保护模式
      eviction-interval-time-in-ms: 10000 #定期清理无效链接,单位 ms

④ 创建引导类:

@SpringBootApplication
@EnableEurekaServer
public class LeyouRegistryApplication {

    public static void main(String[] args) {
        SpringApplication.run(LeyouRegistryApplication.class); //args可省略
    }
}

⑤启动,测试:


访问 localhost:10086:

注册中心 搭建成功。

不过,在服务列表里,我们可以看到,eureka注册给了自己。
这个其实我们用不上,我们只需要一些可用的微服务。
所以,我们可以把这个关掉:

 

(2)搭建Zuul网关模块

①创建工程

②引入依赖:

<?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>leyou</artifactId>
        <groupId>com.leyou.parent</groupId>
        <version>1.0.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.leyou.gateway</groupId>
    <artifactId>leyou-gateway</artifactId>
    <version>1.0.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
    </dependencies>

</project>

③覆盖默认配置:

server:
  port: 10010
spring:
  application:
    name: leyou-gatewayure
eureka:
  client:
    service-url:
      defaultZone: http://localhost:10086/eureka
    registry-fetch-interval-seconds: 5 #拉取服务间隔时间 单位 秒
zuul:
  prefix: /api #网关前缀

④创建引导类

@SpringBootApplication
@EnableDiscoveryClient
@EnableZuulProxy
public class LeyouGatewayApplication {

    public static void main(String[] args) {
        SpringApplication.run(LeyouGatewayApplication.class);
    }
}

⑤启动,测试。

网关 搭建成功。

(如果你的 Run Dashboard 没有显示出来,可以点击 idea 右侧 Maven Projects ,然后多点击几次刷新
直到右下角出现打开 Run Dashboard 的提示,点击打开就行。)

 

(3)搭建商品微服务

商品微服务工程,我们取名为 leyou-item.

因为商品工程是一个微服务,以后肯定会有其他的系统来调用服务中的一些接口,
所以这里我们使用聚合工程,将要提供的接口和相实体类放到独立子过程中,方便以后的引用调用。

leyou-item 是聚合工程,里面有两个子工程:

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

Ⅰ. 创建聚合工程  leyou-item :

①创建工程

②声明为聚合工程:

 

Ⅱ.创建子模块 leyou-item-interface 

①创建工程

②引入依赖
因为现在还不知道会用到什么,使用等以后使用时,需要什么依赖,再引入什么依赖。

 

Ⅲ.创建子模块 leyou-item-service (微服务)

①创建工程

②引入依赖

完整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>leyou-item</artifactId>
        <groupId>com.leyou.item</groupId>
        <version>1.0.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.leyou.item</groupId>
    <artifactId>leyou-item-service</artifactId>
    <version>1.0.0-SNAPSHOT</version>

    <dependencies>
        <!-- web启动器 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- eureka客户端 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <!-- mybatis的启动器 -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
        </dependency>
        <!-- 通用mapper启动器 -->
        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper-spring-boot-starter</artifactId>
        </dependency>
        <!-- 分页助手启动器 -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
        </dependency>
        <!-- jdbc启动器 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <!-- mysql驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!--interface接口-->
        <dependency>
            <groupId>com.leyou.item</groupId>
            <artifactId>leyou-item-interface</artifactId>
            <version>1.0.0-SNAPSHOT</version>
        </dependency>
        <!--测试-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>
        <!-- springboot检测服务启动器 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    </dependencies>

</project>

③覆盖默认配置

④创建引导类

leyou-item-service 创建成功。

 

然后去配置一下路由:


测试一下
将三个服务全部启动(之前启动的要重启),然后访问http://localhost:10086

 

有个空的json,这说明 搭建成功了!

 

(4)搭建一个通用工具模块

因为有些工具或通用的约定内容,各个服务可以共享。所以我们搭建一个通用的工具模块。

 

这个通用工程模块的依赖,暂时不用配置,等我们后面需要的时候再添加。

 

 

那么整个项目的环境和结构就搭建好了!

 

 

五、项目结构介绍