搭建项目环境,是一个程序员学习的必经之路。没有项目环境,如何开始快乐的编码呢?
注:本笔记使用IDE开发工具
环境整合: springboot+mybatis+dubbo+zookeeper+maven+git & 最后项目打包启动
第一步: 创建主工程
1.1: file -> new -> project
选择maven项目进入下一步。填写groupId,artifactId。点击下一步填写主工程名称。finish.
主工程建立之后,目录结构如下。
1.2: 因为主工程只是作为一个项目的壳,没有实际代码,所以将src目录删掉
第二步: 子模块的创建
2.1:web子模块的创建。
点击项目右键,新建模块。
选择springboot创建方式
勾选需要的jar包,看情况而定。这边是web项目,勾了一个web包
点击下一步下一步完成创建。
web模块目录如下
创建完web之后,刷新maven。发现没有体现是子模块。
查看主工程pom文件,添加子模块配置 ,修改完之后maven显示hope为根项目,就是主工程
接着查看web模块pom文件,发现默认的父依赖是springboot,修改成hope
修改完之后发现报错,找不到下面那两个依赖的jar包了。因为修改之后的父工程没有这两个jar包的版本信息。
先回退回去。按ctrl+鼠标左键点击父依赖spring-boot-starter-parent跳转到父依赖的pom文件查看版本属性。没有找到,继续点击父依赖的父依赖,然后发现了版本号,复制过来
最后修改完pom文件如下,刷新maven
接下来打包一下主工程看能不能正常,发现报错,报错信息如下:
报错信息提示,要是用pom的打包方式,修改主工程的pom,修改完之后重新打包,成功。
接下来看web模块能否正常使用。先配置web端口号。默认的spring配置文件是properties文件格式,修改成yml的树状格式。不改也行,看个人喜好。
配置好web端口。新建一个controller看是否能够接受请求
启动web项目。在浏览器输入地址,访问正常
额外补充: 不使用IDE,测试下服务器的部署方式
将打好的包复制出来
打开命令行使用java -jar运行发现报错
打开jar包发现,这是普通的依赖用的jar包,不是可执行jar包, mainfest中也没有主类信息
打包方式有问题, 网上查找资料之后,在web模块的pom中的构建配置中加入如下代码
刷新maven重新打包。发现这次生成了两个jar包
original版本的同上面那种打包方式,生成的是用于依赖的,不可执行的jar包。将新的jar包复制出来打开看看。发现目录结构发现变化
找到mainfest文件,配置信息也不一样了。
重新使用命令行启动。成功
浏览器访问正常
web模块搭建完毕
2.2: service模块的搭建
service模块创建同web。这边数据库跟框架是使用了postgresql跟mybatis,所以选了这两个依赖
创建完service。同web模块一样,修改service模块的父依赖。其它依赖的版本问题同web的处理方式,到父依赖pom文件查看使用的版本。然后主工程的module配置增加service模块。
接着修改application文件的后缀为yml。加上数据库配置(数据库相应信息自己配置,这个笔记这边不写如何搞数据库,后续有研究再写)
因为mybatis的sql都是放在xml文件中管理的。所以还要配置mybatis的sql文件扫描路径,它才能知道取哪里寻找对应的sql语句。(特别注意mapper-locations的配置,如果配置错误了,执行sql的时候会找不到对应的sql语句。classpath*后面不要空格)
在resource下面建立相应的目录
最后配置一下service模块的端口号。
接下来写个类来测试一下数据库查询。服务类如下
sql文件如下
测试类如下
执行测试类后,成功查询到数据
到此service模块建立完毕。在创建的过程中遇到问题修改配置做了蛮多改动,比较容易忘记自己改了什么。所以接下来先讲如何讲项目传到github上。
第三步:将项目上传到github中
打开项目目录,右键创建git仓库
创建完仓库之后,在IDE中就可以看到git的选项。
点击项目右键,将文件添加到git管理,然后点击提交目录。commit之后是存在了本地的仓库。点击push,提交到远程仓库
因为还没有定义远程仓库,所以点击配置下远程仓库地址.
仓库地址自己去github登陆创建
建好仓库之后回到IDE配置远程仓库地址。push项目。在github上面可以看到自己的提交记录,提交成功。在IDE的git中可以看到远程仓库的名称
git代码提交完毕。接下来继续完善项目。创建api模块
第四步:创建api模块
api模块主要用于存放接口声明跟实体vo,建简单的maven模块就行。
api目录结构如下
将web模块跟service模块添加api模块的依赖。接下来创建测试类
在controller中使用接口调用服务。
service项目一运行就马上结束了,所以加上这句代码让线程处理等待状态
这时启动web服务会报错。因为这边是使用web,service模块分离的方式。 所以web依赖注入服务的时候无法找到服务。接下来我们要整合进dubbo+zookeeper,用于web调用远程的service模块。
第五步: 整合zookeeper跟dubbo
zookeeper软件请自行下载,下载之后启动zookeeper服务。
然后为web模块,service模块添加dubbo与zookeeper依赖
为service模块创建dubbo配置文件。并在启动类中加载该配置文件。
service模块提供服务注册到zookeeper当中。
接下来为web模块创建dubbo配置文件,并在启动类当中引入配置文件
web模块引用zookeeper的服务。
然后启动service模块。再启动web模块,启动成功,日志会打印出zookeeper的配置信息
浏览器调用请求,成功调到service服务
简单的springboot分布式项目搭建完成。
ps:在引入zookeeper和dubbo的依赖的时候,出现了一些jar包依赖冲突的问题,比如日志打印不出来,启动显示日志类冲突等。安装IDE的maven helper插件可以比较直观的看到是什么jar包冲突,并尝试排除冲突jar包来看是否能够正常启动。
有错误的地方欢迎指正。