Spring boot/cloud 基础文档
传统JAVA WEB应用是单一的一个工程体系,多个模块之间互相调用形成一个系统,各个模块DATA操作同一数据库不同表,系统部署在一台服务机器上运行。
使用分布式微服务之后在大致情况
微服务设计原则
单一职责原则
服务自治原则
轻量级通信原则
接口明确原则
微服务具备的特性
1. 每个微服务可独立运行在自己的进程里;
2. 一系列独立运行的微服务共同构建起了整个系统;
3. 每个服务为独立的业务开发,一个微服务一般完成某个特定的功能,比如:订单管理、用户管理等;
4. 微服务之间通过一些轻量的通信机制进行通信,例如通过REST API或者RPC的方式进行调用。
首先我们先建立一个spring boot项目,如果建立springboot项目可以通过eclipse,ide工具快速构建,也可以通过start.spring.io在线快速构建。
可以直接run-->spring boot app运行该类,默认端口为8080
之后我们再新建一个controll.class内容为:
具体注解含义本文档不做介绍,请自行了解,请求效果图:
默认端口8080,自带8.5.11版tomcat
接下来我们做操作数据库的spring boot应用,可以整合jpa规则orm框架(hibernate)或者mybatis,这里我们使用mybatis,原因是适用于大型系统的开发需求,灵活多变的sql自定义语句。
红框内的看着是不是眼熟,这和我们以前的ssm的文档结构是相似的,这里我就不说controller,dao,domian,service,mapper里面放的都是什么文件了,有过开发经历的人都知道,不知道百度~~~我们先看看哪些是有变化的。
Pom.xml 添加
这样就整合国mybatis和可以操作数据库了,是不是很简单,不过还有一步,一会说
Service实现类,@service注解没有指定名称,不加的话,默认别名就是当前类名,但是首字母小写 ,相当于<bean id=”axxx” class=”xxx.xxxx.Axxx.class”></bean>
@restController == @Controller + @ResponseBody, (springboot的注解)
再看下dao interface和mapper吧,注意看<select id> 肯dao interface method name
Mapper.xml
最后我们来看这个文件吧
红框内的内容可以不添加,但是待会服务注册会用到,就先加上,不影响使用。
之后对Application.class run-->spring boot app
这样一个spring bootmybatis应用就简单的完成了。
接下来我们要做微服务的应用注册与发现了,本案例使用window系统操作,暂不涉及linux多服务器的配置部署。先简单了解其工作流程,当下比较流行的是dubbo+zookeeper,在spring boot 基础之上有一个spring cloud微服务框架,所以本次使用spring cloud + erueka(服务注册发现中心) + ribbon(负载均衡)
Eureka服务发现客户端
spring-cloud-starter-eureka-server 客户端服务
spring-boot-starter-security 安全认证(用做登录帐号密码,看需求添加,可以不加)
启动上图代码文件run-->spring boot app,浏览器输入http://localhost:8761/,如果有加security,就是我上图这样的,会要求输入用户名和密码,分别为 user user
到此,服务发现客户端安装完毕,结下来我们来做服务注册,就拿我们刚刚的spring boot mybatis工程做改造
这3个文件均有改动
Pom.xml
Application.yml 追加
Application.java
现在启动 Application.java然后浏览器输入http://localhost:8761/
服务提供都已经开发完毕,接下来我们来做服务消费者。
红框是我们要关注的内容
Pom.xml
接下来我们来看使用情况,因为用了负载均衡,为了有比较效果,我会修改端口号启动2个同服务但不同端口在工程,
运行ConsumerMovieRibbonApplication.java run-->spring boot app
该为服务消费者,在浏览器中频繁刷新地址http://localhost:8010/movie/city/?cityName=gz
可以看到是随机负载到不同的端口服务提供者上,至此,spring boot 与spring cloud的微服务入门文档完结,不懂的配置和注解的使用可自行goole或baidu