搭建项目前,先看看项目的介绍与架构:文档:乐优商城介绍与架构
目录
一、技术选型
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)搭建一个通用工具模块
因为有些工具或通用的约定内容,各个服务可以共享。所以我们搭建一个通用的工具模块。
这个通用工程模块的依赖,暂时不用配置,等我们后面需要的时候再添加。
那么整个项目的环境和结构就搭建好了!