左边是我们要使用的技术,当然有一些还没有学过,只是去体验,以后会慢慢学到的。
右边是我们需要实现的功能。
我们先去设计数据库表格:
它们之间存在一个外键连接。
我们先不去给emp员工表加内容,因为我们最后要去做增加功能。
我们先建立父子maven项目,我们的微服务就是把很多小项目分别放在一起。
父子项目结构如下:
父项目的pom.xml:
父项目中我们导入的依赖有:
springcloud,springboot,lombok,web
我们就是用springboot做后台,是一个web项目,用springcloud做微服务。引入哪些包也显而易见了。
子项目导入的pom.xml:
子项目中我们额外用到了eureka.
我们在yml文件中要配置eureka服务器的相关配置以及端口号的设置:
这个部分比较固定,先设置端口号为8888,然后这只eureka服务器的本地IP地址为127.0.0.1相当于localhost.以及它固定的服务地址。eureka的最后两个属性是表名eureka不把自己注册进去,表明自己是一台服务器。
最后我们为当前项目起一个名字叫service-eureka.
写好我们的启动类,我们就可以去运行一下看看了:
我们就来到了这个spring eureka页面,我们可以从中看到我们的application是没有服务的。
所以现在我们就需要在里面加上我们的服务内容。
我们来新建一个服务:
我们新建的maven子项目还是一样需要引入一些依赖:
我们还需要加入数据库的依赖,整合mybatis的依赖:
我们依赖都引入完之后,我们肯定要先去写好application.yml。
我们要在里面配置好tomcat端口号,数据库信息,mybatis文件扫描位置,eureka服务器的信息:
我们正常的项目结构还是一样的。
我们最后把自动启动类写完:
我们这里不需要在SpringBootApplication注解后面加入不启动数据库的配置语句,如果加上的话,那我们在ymlh中的jdbc数据库信息不就白写了么。
我们这个服务也就写完了。我们之后只需要在里面写具体业务代码就可以了。我们的微服务相当于把一个项目由若干部分去完成,增加了工作效率。
我们环境配置好了,就按照正常逻辑去写就好了:
按照顺序先写实体类:
之后我们去写dao接口:
我们创建完接口先不要立马去写里面的内容,先去把mapper.xml文件写好:
当然我们的实体类中有属性是驼峰命名的和数据库的字段名称不匹配,我们要先进行结果集映射:
先写一个查询所有部门的方法:
写一个方法对应一个mapper:
再写一个查询所有员工的方法:
对应的mapper:
然后我们去写service层:
然后就正常的去写service实现类:
service写完,我们就去写controller层:
在controller层我们利用json去返回数据到前台页面:
我们之前service没有加@Service注解,我们要加上不然会报错,我们把之前service的方法补全:
我们的功能基本就写完了,最后我们还要在我们的启动类上加一个注解:
不然Mybatis找不到对应的包。
我们去运行一下:
先给员工写一条字段:
成功查到数据。
接下来我们来创建一个服务网关的项目:
同样我们还是来新创建一个子项目:
我们把上一个的依赖导进去就行,但是我们不需要加数据库和Mybatis的依赖
我们可能还需要熔断器和thymeleaf这两个部分的依赖,虽然用不到,但是我们还是把它们加上:
同样这个子项目还是需要yml文件的:
只需要配置端口号和eureka服务器。
同样的接下来我们去写启动类:
启动类的写法也是固定 的。
我们接下来去写一个service:
我们要给这个网关客户端加一个名字,加什么名字呢?
就写这个名字就可以了。
我们的映射地址就写我们之前客户端的emp表的controller的地址就可以。
方法我们定义为json类型的返回值。
我们的Controller就调用我们的service的方法即可:
我们运行这个子项目的时候,先去走它的service方法:
接下来它会去找我们这个service里的名称的客户端是否存在,如果存在就去走controller地址:
去执行这个查询功能。
最后通过feign的controller里,把数据以json格式转发给前端页面。
我们最后去运行一下我们的feign,我们可以通过feign里的端口号去实现查询emp的功能,它这个服务网关可以理解为开分店