一、学习内容
1. 整理Spring boot整合dubbo 创建项目的步骤
1) 整合过程中pom中相关依赖的介绍
Spring Boot参考文档地址:
https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#using-boot-starter
Spring boot相关:
Spring-boot-starter:核心启动器,包括自动配置支持,日志记录和YAML
Spring-boot-starter-web:使用Spring MVC构建web(包括RESTful)应用程序,使用Tomcat作为默认的嵌入式容器
Spring-boot-starter-test:使用JUnit,Hamcrest和Mockito等库来测试Spring Boot应用程序
Spring-boot和dubbo整合相关:
dubbo-spring-boot-starter:Spring Boot快速继承Dubbo关键的依赖
dubbo相关:
dubbo
zookeeper的包
Zkclient
其他(可以理解成是辅助集成zookeeper的):
在使用ZK开发时会遇到让人头疼的几个问题,ZK连接管理、SESSION失效等一些异常问题的处理,Curator可以解决这些问题,通过对ZK连接状态的监控来做出相应的重连等操作,并触发事件。并且Curator对ZK的一些应用场景在符合ZK使用规范的基础上提供了非常好的实现,并有很多扩充。
curator-framework: 封装了大量ZooKeeper常用API操作,降低了使用难度, 基于Zookeeper增加了一些新特性,对ZooKeeper链接的管理,对链接丢失自动重新链接。
curator-recipes:ZooKeeper的系列recipe实现, 基于 Curator Framework
Maven之exclusions(排除依赖):
pom配置里允许用<excusion>来排除一些不需要同时下载的依赖Jar
2) 父项目和子项目之间的依赖关系
① dependencies与dependencyManagement的区别
② 子项目的pom如何继承父项目pom的依赖?
子项目的pom就要通过使用<parent>标签来继承,具体如所示:
③ 如何添加依赖?
A. 不通过继承(可能发生重复引用的问题)
不通过继承就直接按照一般的方式(要有version),如下图所示:
B. 通过继承
主pom中把依赖通过<dependecyManagement>引起来,表示子pom可能会用到的jar包依赖。子pom如果需要引用该jar包,则直接引用即可,不需要加入<version>。
主pom中:
子项目中:(此处只是举个例子,两个pom之间没有直接关联,主要关注格式而非具体的依赖名称)
3) Spring boot整合Dubbo的详细过程
① 首先贴出项目最终的结构:
各个模块的结构:(红框标注的部分都是自己要添加的文件)
api:
consumer:
provider:
② 具体过程
先创建一个基于maven的空项目,然后分别在这个项目下面创建三个模块,命名为api,consume,.provider。其中,api是一个普通的maven项目,另外两个都是基于spring boot的项目。
点next之后直接点击finish,接着创建三个模块,顺序是api、provider、consumer
点击next,之后finish,继续创建模块,注意选择Spring Initialize
next之后点击finish。同样的方法创建concumer模块,只要把相应位置的Provider换成consumer即可。
项目创建完成先进行maven的配置,file-setting,搜索maven,进行如下图所示配置,根据自己的maven实际的路径,其中local repository自己创建一个文件夹即可用来存放下载的jar包。
至此要注意模块之间的依赖关系:
除了dubboDemo是剩下三个模块的父项目之外,concumer模块和provider模块都要对api模块添加依赖,添加依赖的方式有两种,一种是在concumer和provider的pom文件中添加如下语句:
另一种是:
选择api,点击OK-->OK。
下面就是根据目录结构创建文件,先在相应的pom中添加依赖,然后在相应位置创建provider.xml,consumer.xml。接着修改application.properties文件。之前也了解过dubbo的调用流程,接口在api中创建,实现在provider中完成,在consumer中完成调用,所以控制层在consumer,按照这样的顺序一步一步来即可。
consumer的application.properties:
Provider的application.properties:
ConsumerApplication:
ProviderApplication:
其他文件自行创建,对控制层代码进行特别提示:注意Refefrence是哪个包里的
2. 关于项目运行:先启动zookeeper,运行zookeeper解压目录bin目录下的zkServer.cmd,然后先启动provider再启动consumer,在浏览器输入:
GitHub上的demo被删除了 待我整理一波再奉上地址。。。