前言
1.springcloud Finchley.SR2版本
2.springboot 版本2.0.6.RELEASE
3.h2
4.jooq
5.consul
搭建一个电影微服务
目的
利用idea快速搭建一个springcloud集成上述功能的微服务,可以查询电影
正文
初始化工程
方法跟**springcloud编写用户微服务**中前期准备工程一般,勾选下列依赖
在resources文件夹下新增bootstrap.yml文件,写入以下内容
1 | #tomcat启动启动端口 |
初始化H2数据库
这时候决定手动初始化datasource,同时集成第三方数据库连接池进来,详情**springboot集成druid**
此时consul上的配置如下
1 | spring: |
根据配置在resources目录下,新增db文件夹,下面新增schema.sql和data.sql文件,内容分别如下
1 | drop table movie 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**
扩展
这里和user有一些不同的是,我将h2的数据库类型改成了内存,结果jooq-codegen-maven无法生成
1 | <!-- JDBC connection parameters --> |
需要改成文件类型
1 | <!-- JDBC connection parameters --> |
因为h2选择的是内存数据库,不管我是否将h2数据库开启(程序运行或不运行),然后执行jooq generate,都无法生成
如果我将h2类型改为file,那么这个时候不能运行源程序,才能执行jooq generate,否则执行jooq generate的时候会报错数据库使用中
扩展
在maven package时,由于集成了jooq generate工具,会执行一遍,这样如果自己修改了相关类会被还原,所以在打包时希望不执行相关驱动可以加如下配置
放在pom驱动配置的configuration标签内
20181030更新:注意这个标签添加之后,无论编译打包甚至直接运行这个插件都不再生成相关东西,如果你现在需要重新运行一遍,请先提交或者保存你做过的修改,然后注释掉这个,运行完之后再加上,然后再将你做的修改重新添加回来
1 | <!-- install 跳过 --> |
在打包的过程中,执行了springboot中的一些test,当从consul上远程读取yml配置时爆了如下错,忽略测试打包成功后,启动工程仍然报错,然而idea中自己run的时候却没有报错
对比了相关命令
远程yml配置中含有中文,务必在使用java -Dfile.encoding=UTF-8 -jar .\consul-movie-0.0.1-SNAPSHOT.jar指定utf8编码
不然打包会失败,启动失败,会报上面的错
https://github.com/jOOQ/jOOQ/blob/master/jOOQ-examples/jOOQ-spring-example/pom.xml