SpringCloud Alibaba实战(4:基本开发框架搭建)
在上一节,我们已经完成了项目的整体技术架构设计和具体的数据库设计,接下来,我们搭建整体的开发框架。
开发工具选用Idea。

开发工具只是为了提高效率,如果不习惯Idea的话,STS使用起来也是OK的。
1、创建多Module工程
1.1、创建父工程
创建一个父项目,项目命名为eshop-project,用于管理子模块功能。
- 新建Project

- 选择Maven工程,next

- 填写GroupId和ArtifactID

- 填写项目名,选择项目位置

- 删除src,添加maven配置

<!--设置为pom,管理依赖-->
<packaging>pom</packaging>
<!--使用properties统一管理属性-->
<properties>
<java.version>1.8</java.version>
</properties>
需要注意,我们这里最好统一设置一下Jdk编译版本,默认的编译版本1.5可能会影响我们使用一些新特性:
<!--配置编译JDK版本-->
<build>
<plugins>
<!--JDK版本 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
<showWarnings>true</showWarnings>
</configuration>
</plugin>
</plugins>
</build>
1.2、创建子module
- 选中父项目,右键,新建module

- 选择Maven工程

- 填写子module工程名

- 创建完成,完成效果

OK,到此我们的子module就创建完成了。接下来如法炮制,创建另外几个子module,结果如下:

这里我们按照之前的业务模块拆分来创建每个子工程,子工程对应的功能:
- eshop-common:通用的工具类,实体包等等。
- eshop-finance:支付子服务,对应shop-finance库。
- eshop-goods:商品子服务,对应shop-goods库。
- eshop-order:订单子服务,对应shop-order库。
- eshop-stock:库存子服务,对应shop-stock库。
- eshop-user:用户自服务,对应shop-user库。
注意业务和功能粒度的划分,我们这里划分到了每个业务子模块,但是对应的mvc分层没有划分。在实际的生产中,可能会根据实际情况,把视图层、服务层、持久层再度拆分。这样更细的粒度,更方便小团队的开发。
我们这里只是为了开发的方便,在实际的项目中,我们对应的每个服务一般都会单独创建项目,由不同的小组来进行维护,开发、测试过程只需要把服务注册在统一的注册中心就可以了。

这样一个粗略的开发框架就搭建起来了,下一节我们会接着完善它,包括引入SpringBoot、MybatisPlus等等。
2、使用Gti进行版本控制
Git是现在最流行的版本控制系统。在企业级的微服务项目中,一般使用Gti进行版本控制,使用GitLab搭建远程仓库。
在这里,我们选择使用Gitee作为我们的远程仓库。
关于Giit的基础使用,可以查看我的这篇博客:Git全栈开发者使用指南
2.1、初始化本地仓库
- 打开项目路径,右键git bash

- 执行初始化本地仓库命令
git init

在项目目录下创建文件文件
.gitignore,写入需要忽视提交的文件类型
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
**/.idea/**
**/target/**
**/*.iml
*.iml
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
- 首次提交,命令如下:
$ git status
$ git add .
$ git commit -m "eshop微服务项目初始化"
通常我们还会创建一个开发分支,由于只是个简单demo,我们这里就不建了。
2.2、初始化远程仓库
gitee是国内版的github,最近github访问很不稳定,所以选择将远程仓库放在gitee。关于Github和Gitee的配置,可以查看我的这篇博客:Windows配置Github、Gitee共存的Git环境
- 打开gitee,新建仓库

- 填写仓库名城,仓库介绍,开源等等

- 可以看到,我们的远程仓库已经创建完成,可以看到仓库还是空空如也

- 本地仓库关联远程仓库,拷贝仓库地址,在本地仓库,使用命令关联远程仓库:
$ git remote add origin git@gitee.com:fighter3/eshop-project.git
- 使用命令推送本地提交到远程仓库
$ git push origin master

OK,在远程仓库,已经可以看到我们的提交了。

"简单的事情重复做,重复的事情认真做,认真的事情有创造性地做!"——
我是三分恶,可以叫我老三/三分/三哥/三子,一个能文能武的全栈开发,咱们下期见!
参考:
【1】小专栏 《SpringCloudAlibaba微服务实战》
【2】:Spring Cloud Alibaba系列之-项目搭建(一)
SpringCloud Alibaba实战(4:基本开发框架搭建)的更多相关文章
- SpringCloud Alibaba实战(6:nacos-server服务搭建)
源码地址:https://gitee.com/fighter3/eshop-project.git 持续更新中-- 大家好,我是三分恶. 这一节我们来学习SpringCloud Alibaba体系中一 ...
- 如何跟领导解释为什么选择SpringCloud alibaba作为微服务开发框架
什么是微服务 提到微服务不得不提Martin Fowler在2014年3月25日发表的文章 Microservices,里面给出了微服务的定义.后续国内所有关于微服务的介绍都是基于这篇文章的翻译,或加 ...
- SpringCloud Alibaba实战(2:电商系统业务分析)
选用了很常见的电商业务来进行SpringCloud Alibaba的实战. 当然,因为仅仅是为了学习SpringCloud Alibaba,所以对业务进行了大幅度简化,这里只取一个精简版的用户下单业务 ...
- SpringCloud Alibaba实战(3:存储设计与基础架构设计)
1.存储设计 在上一章中,我们已经完成了基本业务流程的梳理和服务模块的划分,接下来,开始设计数据存储. 虽然在微服务的理论中,没有对数据库定强制性的规范,但一般,服务拆分之后,数据库也会对应的拆分. ...
- SpringCloud Alibaba实战(7:nacos注册中心管理微服务)
源码地址:https://gitee.com/fighter3/eshop-project.git 持续更新中-- 在上一节我们已经完成了Nacos Server的本地部署,这一节我们学习如何将Nac ...
- SpringCloud Alibaba实战(8:使用OpenFeign服务调用)
源码地址:https://gitee.com/fighter3/eshop-project.git 持续更新中-- 在上一个章节,我们已经成功地将服务注册到了Nacos注册中心,实现了服务注册和服务发 ...
- SpringCloud Alibaba实战(9:Hystrix容错保护)
源码地址:https://gitee.com/fighter3/eshop-project.git 持续更新中-- 在上一节我们已经使用OpenFeign完成了服务间的调用.想一下,假如我们一个服务链 ...
- SpringCloud Alibaba实战(11:引入服务网关Gateway)
源码地址:https://gitee.com/fighter3/eshop-project.git 持续更新中-- 大家好,我是三分恶. 在前面的章节中,我们已经完成了服务间的调用.统一配置等等,在这 ...
- SpringCloud Alibaba实战(12:引入Dubbo实现RPC调用)
源码地址:https://gitee.com/fighter3/eshop-project.git 持续更新中-- 大家好,我是老三,断更了半年,我又滚回来继续写这个系列了,还有人看吗-- 在前面的章 ...
随机推荐
- 从苏宁电器到卡巴斯基(后传)第05篇:聊聊我对WannaCry产生的感慨
这几天看到网上对WannaCry勒索病毒讨论得沸沸扬扬,不免有些感触. 其实该病毒的这次爆发,完全可以类比N年前"熊猫烧香"爆发的情况.也就是国内杀软纷纷歇菜,让本来就没什么技术含 ...
- UVA11636复制粘贴
#include<stdio.h> int main() { int Cas = 1 ,n; while(~scanf("%d" ,&n) & ...
- nodejs-函数&路由
函数------------------------------------------------------------ 基本函数 function say(word) { console.log ...
- <JVM中篇:字节码与类的加载篇>02-字节码指令集
笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...
- [LeetCode每日一题]153.寻找旋转排序数组中的最小值
[LeetCode每日一题]153.寻找旋转排序数组中的最小值 问题 已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组.例如,原数组 nums = [0,1, ...
- c++中new[ ]与delete[ ]的分析
前言 以前对c++的new[]的了解就是开辟一块内存,直到我最近在程序中用到它才发现我的了解太浅. 问题分析 new[]得到的内存空间不会自动初始化 new[]是在堆区中动态分配指定大小的内存,但是这 ...
- 三分钟了解B2B CRM系统的特点
最近很多朋友想了解什么是B2B CRM系统,说到这里小Z先来给大家说说什么是B2B--B2B原本写作B to B,是Business-to-Business的缩写.正常来说就是企业与企业之间的生意往来 ...
- Java中NIO的简单介绍
NIO基本介绍 Java NIO(New IO) 也有人称之为Java non-blocking IO 是从Java1.4版本开始引入的一个新的IO API,可以代替标准的IO API.NIO与原来的 ...
- vscode 取消 eslint everywhere
vscode装了eslint插件,一不小心点了eslint everywhere 然后任务栏就变成这样了 eslint前面是双钩 不管你打开什么项目,什么工作空间,永远都是默认开启ESlint!!! ...
- 史上最全(全平台)docker安装方法!
代码狂魔 32019.01.05 22:46:46字数 4,426阅读 9,949 image.png 2017年2月8日,docker更新到1.13.1(更新日志),此后又分为了docker CE( ...