创建父工程
- 创建统一的父工程:leyou,用来管理依赖及其版本
- 创建Maven工程,一开始能简洁就简洁
- 填写项目信息(最基本的三个信息):
- GroupId:是项目组织唯一的标识符,实际对应JAVA的包的结构,是main目录里java的目录结构。
- 定义了项目属于哪个组,举个例子,如果你的公司是mycom,有一个项目为myapp,那么groupId就应该是com.mycom.myapp
- Artifacted:定义了当前maven项目在组中唯一的ID,比如,myapp-util,myapp-domain,myapp-web等。
- Version:指定了myapp项目的当前版本,SNAPSHOT意为快照,说明该项目还处于开发中,是不稳定的版本。
- Name:声明了一个对于用户更为友好的项目名称,不是必须的,推荐为每个pom声明name,以方便信息交流。
- 添加依赖(父工程引入后,子工程就不需要引入了)
- spring-cloud-dependencies:微服务必备
- org.mybatis.spring.boot:mybatis的启动器
- mapper-spring-boot-starter:通用mapper启动器
- pagehelper-spring-boot-starter:分页助手启动器
- mysql-connector-java:mysql驱动
- fastdfs-client:FDS
创建注册中心
- 不用骨架(模板)新建module,注册中心,起名为:leyou-registry
- 选择安装目录,因为是聚合项目,目录应该是在父工程leyou的下面:
聚合主要为了快速构建项目,继承主要为了消除重复;
分模块开发,来提高代码的清晰和重用 - 添加依赖:spring-cloud-starter-netflix-eureka-server
-
编写启动类:@EnableEurekaServer:**Eureka服务器相关配置
-
配置文件:设置服务器端口
指定默认启动环境
设置eureka:客户端设置,服务器端设置
设置路由地址
### 删除application.yml文件中所有中文注释。否则会报错 ###
创建服务网关
- 与上面类似,选择maven方式创建Module,然后填写项目名称
- 然后需要添加Zuul和EurekaClient的依赖
spring-cloud-starter-netflix-zuul
spring-cloud-starter-netflix-eureka-client -
编写启动类:@SpringBootApplication
@EnableDiscoveryClient
@EnableZuulProxy -
配置文件
创建商品微服务
既然是一个全品类的电商购物平台,那么核心自然就是商品。因此我们要搭建的第一个服务,就是商品微服务。其中会包含对于商品相关的一系列内容的管理,包括:商品分类管理,品牌管理,商品规格参数管理,商品管理,库存管理
因为与商品的品类相关,我们的工程命名为leyou-item.
需要注意的是,我们的leyou-item是一个微服务,那么将来肯定会有其它系统需要来调用服务中提供的接口,获取的接口数据,也需要对应的实体类来封装,因此肯定也会使用到接口中关联的实体类。
因此这里我们需要使用聚合工程,将要提供的接口及相关实体类放到独立子工程中,以后别人引用的时候,只需要知道坐标即可。因为是聚合工程,所以把项目打包方式设置为pom。
我们会在leyou-item中创建两个子工程:
-
leyou-item-interface:主要是对外暴露的接口及相关实体类
-
leyou-item-service:所有业务逻辑及内部使用接口
-
编写启动类
@SpringBootApplication
@EnableDiscoveryClient -
依赖
-
web启动器
-
eureka客户端
-
分页助手启动器
-
jdbc启动器
-
springboot检测服务启动器
-
教程还引入了mabatis和mysql相关的,但父工程已经引入了,先注释掉试试
-
-
配置yml
-
、
测试
用IDEA Services调试所有服务,有先后顺序,先启动注册中心,再启动网关,最后测试Item-Service
打开Eureka管理页面,可以进入另外两个服务的测试页面(Eureka-client)
https://www.jianshu.com/p/2e2332f247fe
前端搭建
前后端完全分离,直接把前端部分leyou-manage-web解压到leyou同级目录即可,用包管理器npm导入依赖,启动得到前端界面
总结:课程上不到一个小时的搭建时间,花了一天多,主要还是依赖导入比较慢,有些错误出来不知道怎么解决,于是从头搭建了好几遍,家里和单位两台电脑去试,最后成功了,虽然很多地方一知半解,但好在能运行了,目前时间比较紧张,正确六月前写完一遍这个项目,先大体了解下,不纠结细节,实在运行不了的时候再去探寻一下原理。