前言
1.springcloud Finchley.SR2版本
2.springboot 版本2.0.6.RELEASE
3.h2
4.jooq
5.consul
搭建一个用户微服务
目的
利用idea快速搭建一个springcloud集成上述功能的微服务,可以查询用户
正文
初始化工程
方法跟**springcloud集成consul**中前期准备工程一般,勾选下列依赖
在resources文件夹下新增bootstrap.yml文件,写入以下内容
1 | #tomcat启动启动端口 |
启动主工程,查看consul ui发现程序正常注册
如果程序未能正常注册,查看程序是否正常启动或者这里的ip需要写成程序所在机器的ip,consul集群所在的机器能够访问
初始化H2数据库
由于已经使用了consul作为配置中心,直接在consul配置界面新增如下配置
启动之后发现datasource循环依赖
这时候决定手动初始化datasource,同时集成第三方数据库连接池进来,详情**springboot集成druid**
此时consul上的配置如下
1 | spring: |
根据配置在resources目录下,新增db文件夹,下面新增schema.sql和data.sql文件,内容分别如下
1 | drop table user if exists; |
在pom中添加依赖druid
1 | <dependency> |
在主程序平级目录新增db目录,新增DataSourceBean.java和DatasourceConf.java
1 | @Configuration |
重新启动主程序,此时会报一个小错,具体原因是由于druid开启了如下配置,当数据库为h2并且需要执
行新增表操作时,sql统计分析会合并异常,具体看github上面的issue
1 | # 配置监控统计拦截的filters,去掉后监控界面sql无法统计 |
检查
1.查看h2 ui,是否user表和数据是否写入 http://localhost:1016/h2-console/
2.查看druid监控页面 http://127.0.0.1:1016/druid/sql.html
集成jooq generate工具
具体教程可见**springboot集成jooq**
扩展
在maven package时,由于集成了jooq generate工具,会执行一遍,这样如果自己修改了相关类会被还原,所以在打包时希望不执行相关驱动可以加如下配置
放在pom驱动配置的configuration标签内
20181030更新:注意这个标签添加之后,无论编译打包甚至直接运行这个插件都不再生成相关东西,如果你现在需要重新运行一遍,请先提交或者保存你做过的修改,然后注释掉这个,运行完之后再加上,然后再将你做的修改重新添加回来
1 | <!-- install 跳过 --> |
在打包的过程中,执行了springboot中的一些test,当从consul上远程读取yml配置时爆了如下错,忽略测试打包成功后,启动工程仍然报错,然而idea中自己run的时候却没有报错
对比了相关命令
远程yml配置中含有中文,务必在使用java -Dfile.encoding=UTF-8 -jar .\consul-user-0.0.1-SNAPSHOT.jar指定utf8编码
不然打包会失败,启动失败,会报上面的错
https://github.com/jOOQ/jOOQ/blob/master/jOOQ-examples/jOOQ-spring-example/pom.xml