1-4 云商城项目工程搭建
1-4 云商城项目工程搭建
接下来我们就来搭建下云商城的项目工程结构。
1、工程结构划分
因为我们搭建的是微服务项目,所以整体的项目结构会非常的零散。虽然零散但是程序的复用性会非常高,所以首先在划分的时候我们可以将相关的业务服务放置在一个工程结构下。
然后就是整个系统会使用到的依赖包、加载类及相关的普通工具包等我们也可以放置在一个util工程下
还有就是相关的业务微服务会有很多的JavaBean(API)是需要复用到的,还有就是feign接口等像这些我们也可以放置在同一个工程中。
还有一个比较重要的模块是微服务网关模块,这个我们也需要单独的放置
以上的模块我们都是基于Restful风格的方式进行通信,商城系统我们还需要涉及到页面渲染的部分,这部分我们也同样单独的来放置
最后我们将以上的微服务都放置在同一个父工程中,该父工程负责子工程、jar的管理工作
当然这种结构并不是唯一的,只要大家觉得合理的搭配都是可以的哦。
2、项目结构搭建
接下来我们就具体的来搭建相关的工程结构
2.1 顶级父工程搭建
我们单独来构建这个项目,顶级父工程我们通过SpringBoot的在线模板来构建。步骤如下:
设置系统相关的参数
相关的依赖选择
需要注意的是这部分我们可以什么都不选择,我们可以在后面具体使用的时候需要用都什么就选择什么即可,但是要注意SpringCloud Alibaba相关的依赖对SpringBoot的版本是有要求的,必须是在2.2到2.3之间的版本,但是上面最低的版本是2.3.7那么我们在创建完成后再修改下版本即可。
在这里插入图片描述
因为创建的是父工程,所以src目录没有必要,同时项目的类型应该是pom类型。然后添加的依赖应该是整个项目所有模块都会使用到的。所以设置如下:
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.10.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.bobo.vip.mall</groupId><artifactId>bobo-vip-mall</artifactId><version>0.0.1-SNAPSHOT</version><name>bobo-vip-mall</name><packaging>pom</packaging><description>商城系统</description><properties><java.version>1.8</java.version><spring-cloud-alibaba.version>2.2.1.RELEASE</spring-cloud-alibaba.version></properties><dependencies><!--lombok 便于Bean的创建 --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!-- 单元测试 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency><!--热部署插件--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency></dependencies><dependencyManagement><dependencies><!--alibaba--><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><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
2.2 各个模块父工程搭建
我们可以按照功能分类,给每类工程创建一个父工程,方便管理。
mall-api:存储所有数据库表对应的Bean和Feign接口
mall-gateway:存储所有微服务网关
mall-service:存储所有微服务工程
mall-util:存储公共工程
mall-web:存储所有和页面渲染有关的工程
mall-api
创建模块工程的时候我们只创建一个普通的maven工程即可。
相关属性设置
因为mall-api也是个父工程,所以packaging也设置为pom类型
pom文件的内容
<?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>bobo-vip-mall</artifactId><groupId>com.bobo.vip.mall</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>mall-api</artifactId><packaging>pom</packaging><description>存放所有JavaBean和Feign接口</description></project>
安装上面的步骤创建对应的其他几个模块的父工程。
mall-gateway
网关模块的父工程
对应的pom文件内容
<?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>bobo-vip-mall</artifactId><groupId>com.bobo.vip.mall</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>mall-gateway</artifactId><packaging>pom</packaging><description>存放微服网关集群</description></project>
mall-service
pom文件的内容
<?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>bobo-vip-mall</artifactId><groupId>com.bobo.vip.mall</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><packaging>pom</packaging><artifactId>mall-service</artifactId><description>所有的应用服务</description></project>
mall-util
对应的pom文件中的内容
<?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>bobo-vip-mall</artifactId><groupId>com.bobo.vip.mall</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><packaging>pom</packaging><artifactId>mall-util</artifactId><description>存放所有公共工程</description></project>
mall-web
对应的pom文件的内容
<?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>bobo-vip-mall</artifactId><groupId>com.bobo.vip.mall</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><packaging>pom</packaging><artifactId>mall-web</artifactId><description>存放所有和页面渲染有关的工程,不建议放在service中,所有service只提供基于RESTful的服务</description></project>
创建好的目录结构:
2.3 公共工程搭建
公共依赖汇总
service中以后要创建微服务工程操作数据库,我们可以把所有service需要用到的包以及所有service需要初始化的对象放到一个独立的工程中,以后哪个工程要用,直接依赖即可。
在mall-util
中创建mall-service-dependency
,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>mall-util</artifactId><groupId>com.bobo.vip.mall</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>mall-service-dependency</artifactId><description>所有service工程依赖的包汇总以及初始化工具包</description><dependencies><!--web包--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--MyBatis Plus--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.3.2</version></dependency><!--MySQL--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><!--Redis--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><!--Nacos--><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-nacos-discovery</artifactId></dependency></dependencies></project>
公共工具包
我们需要用到的工具包也可以单独放到一个工程中,每次要用,直接依赖即可。
在mall-util
中创建mall-common
,我们在工程中创建2个对象:
用于指定响应状态码的枚举对象:com.bobo.mall.util.RespCode
package com.bobo.mall.util;public enum RespCode {SUCCESS(20000, "操作成功"),ERROR(50000, "操作失败"),SYSTEM_ERROR(50001, "系统错误");private Integer code;private String message;RespCode(Integer code, String message) {this.code = code;this.message = message;}RespCode() {}public Integer getCode() {return code;}public void setCode(Integer code) {this.code = code;}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}
}
用于响应用户信息封装的对象:com.bobo.mall.util.RespResult
package com.bobo.mall.util;import java.io.Serializable;public class RespResult<T> implements Serializable {//响应数据结果集private T data;/*** 状态码* 20000 操作成功* 50000 操作失败*/private Integer code;/**** 响应信息*/private String message;public RespResult() {}public RespResult(RespCode resultCode) {this.code = resultCode.getCode();this.message = resultCode.getMessage();}public RespResult(T data, RespCode resultCode) {this.data = data;this.code = resultCode.getCode();this.message = resultCode.getMessage();}public static RespResult ok() {return new RespResult(null, RespCode.SUCCESS);}public static RespResult ok(Object data) {return new RespResult(data, RespCode.SUCCESS);}public static RespResult error() {return new RespResult(null, RespCode.ERROR);}public static RespResult error(String message) {return secByError(RespCode.ERROR.getCode(),message);}//自定义异常public static RespResult secByError(Integer code,String message) {RespResult err = new RespResult();err.setCode(code);err.setMessage(message);return err;}public static RespResult error(RespCode resultCode) {return new RespResult(resultCode);}public T getData() {return data;}public void setData(T data) {this.data = data;}public Integer getCode() {return code;}public void setCode(Integer code) {this.code = code;}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}
}
依赖管理
service工程一定会依赖mall-service-dependency
和mall-common
,我们可以修改mall-service
将这两个工程添加到依赖中:
<dependencies><!--依赖mall-service-dependency--><dependency><groupId>com.bobo.vip.mall</groupId><artifactId>mall-service-dependency</artifactId><version>1.0-SNAPSHOT</version></dependency><!--依赖mall-common--><dependency><groupId>com.bobo.vip.mall</groupId><artifactId>mall-common</artifactId><version>1.0-SNAPSHOT</version></dependency>
</dependencies>
整体的目录结构就创建到此咯~下篇我们开始具体的业务实现了!
1-4 云商城项目工程搭建相关推荐
- 淘淘商城项目mysql服务器_SpringMVC+Spring+Mybatis+Mysql+Maven+Svn[ 淘淘商城项目环境搭建 ]...
背景:淘淘商城项目的环境搭建 说明:采用SpringMVC+Spring+Mybatis+Mysql+Maven+Svn结构搭建,在开发之中可以参考其结构和搭建步骤去搭建实际的工程项目 工程结构简图: ...
- ThinkPHP5.0商城项目目录搭建(菜鸟)
项目目录 ThinkPHP5.0类的命名:直接命名(首字母大写)eg:UserController.class.php => User.php 下载ThinkPHP5.0 解压作为根目录: 如图 ...
- 谷粒商城项目环境搭建
目录 Windows环境下安装 用VMware构建Linux虚拟机环境 Linux环境下安装Docker Docker使用阿里云镜像下载 Docker下载Mysql5.7版本 Docker下载Redi ...
- github项目工程搭建步骤
1:申请github账号 2:创建新工程(选择repositories添加工程,选择公开或私有) 3:邀请项目成员(进入新建的项目,选择settings-collaborators,在输入框中输入被邀 ...
- 黑马学成在线--项目环境搭建
完整版请移步至我的个人博客查看:https://cyborg2077.github.io/ 学成在线–项目环境搭建 学成在线–内容管理模块 学成在线–媒资管理模块 学成在线–课程发布模块 学成在线–认 ...
- django debug=false后静态文件丢失_python框架Django实战商城项目之工程搭建
项目说明 该电商项目类似于京东商城,主要模块有验证.用户.第三方登录.首页广告.商品.购物车.订单.支付以及后台管理系统. 项目开发模式采用前后端不分离的模式,为了提高搜索引擎排名,页面整体刷新采用j ...
- python开发商城实战_python框架Django实战商城项目之工程搭建
项目说明 该电商项目类似于京东商城,主要模块有验证.用户.第三方登录.首页广告.商品.购物车.订单.支付以及后台管理系统. 项目开发模式采用前后端不分离的模式,为了提高搜索引擎排名,页面整体刷新采用j ...
- 用python搭建微商城_python框架Django实战商城项目之工程搭建
项目说明 该电商项目类似于京东商城,主要模块有验证.用户.第三方登录.首页广告.商品.购物车.订单.支付以及后台管理系统. 项目开发模式采用前后端不分离的模式,为了提高搜索引擎排名,页面整体刷新采用j ...
- 【系】微信小程序云开发实战坚果商城-商城项目搭建
第 2-1 课:商城项目搭建 目录 开篇 [系]微信小程序云开发实战坚果商城-开篇 基础篇 [系]微信小程序云开发实战坚果商城-弹性盒子 [系]微信小程序云开发实战坚果商城-ES6 简单入门 [系]微 ...
最新文章
- python中的运算符举例_举例讲解Python中的算数运算符的用法
- linux下vim编辑器插件,linux vim编辑器插件的安装和设置方法
- netty系列之:对聊天进行加密
- asp.net MVC中的tip
- php用json交换二维数组,PHP和Javascript的JSON交互(处理一个二维数组)
- java从url下载文件_Java从URL下载文件
- 一个简单示例 利用jawin完成调用window中dll的调用
- Google的云计算引擎与持久化存储磁盘PD
- MSSQL手札四 MSSQL的函数
- Kotlin 函数(普通函数)
- java web整合开发完全自学手册pdf_《JavaScript完全自学手册》PDF 下载
- JavaScript:点击按钮打开/关闭网页
- 高等数学 关于反三角函数arcsin(sinx)的问题
- 【C语言】打印图案总结
- GPS脚环计步、AI“鸡”脸识别,如何确保自己吃到了一只幸福健康的鸡
- 在小程序中使用iconfont
- How Does Linphone Toggle SIP Contact?
- 学术资源不定期分享-【费曼物理学讲义英文原版】
- 信息化和软件服务业司参加工业互联网平台与软件化发展高峰论坛
- vue项目运行后,生成的两个地址Local和Network的区别