接下来就正式开始写这个项目了,前面的东西都准备得差不多了。首先我们创建一个maven项目的父工程,主要是为了以后整体打包用。这里的common,api都是maven项目,下面的微服务才是springboot项目
一个web项目有多个微服务,以商品管理系统为例
由于这里的微服务都不是web服务,所以不需要选web板块,如果是web服务了就变成 springCloud了
直接next,什么都不选
除了最后以后gmall-admin-web这个是web项目,用来与前段对接的,前端的所有请求都来到这里,再通过这个module调用微服务,所以这里选上web,项目创建完成后就是下面的样子:
直接通过idea将项目上传到github上的步骤:https://blog.csdn.net/weixin_44146379/article/details/96706033
然后使用****通过mysql直接在项目中生成对应的代码
创建一个工程obs(逆向生成完后会删除该工程),pom依赖如下:
<dependencies>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.28</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!--防止lombok报错-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.8.0</version>
</dependency>
</dependencies>
api 中要引入dubbo依赖才能让消费者远程调用提供者
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
api中放接口和java bean
****生成的项目,先将mapper复制过来,然后再自己建一个service包,在把impl给复制进来,不然可能会出错
要让一个微服务能使用mybatis,必须声明扫描的mapper包,如下:
要能够远程通信,则要@EnableDubbo
配置文件:
如果用了逆向生成,并且使用mybatis-plus,就不用自己去写增删改查代码了,和Springdate jpa差不多。如果使用了dubbo,那么自动注入就不要用@Service注解了,用@Component注解,@Service拿给dubbo来远程调用使用
以上能够做到的只是在一个数据库中查找,接下来通过代码实现主从复制达到读写分离
引入sharding-jdbc就行,以前要实现这个目的需要用mycat,但是mycat是个重量级的中间件,而sharding-jdbc是轻量级的。
<dependency>
<groupId>io.shardingjdbc</groupId>
<artifactId>sharding-jdbc-core</artifactId>
<version>2.0.3</version>
</dependency>
然后我们将对一个module的配置都专门放入一个config包里(能用java代码实现的才放)
日志对于一个项目来说是特重要的,当一个项目上线时,就不可能再通过system.out来输出信息了,而应该通过日志,把输出信息都输入到日志中,然后通过日志来排查,这里使用elk日志分析
elk:elasticsearch,logstash,Kibana
elasticsearch用于存储和检索数据,logstash就是收集记录日志的,Kibana是elasticsearch的可视化界面,关系如下:
这写又是要在docker里面安装镜像,我就新开一篇文章专门说elasticsearch了