springboot、mybatis-plus、Druid多数据源环境搭建
Java单体项目里,我们一般是只需配置一个数据库,这时代码里的dao层都是只对一个数据库操作;但有时候我们的数据可能在2个或者3个数据库,这时就需要配置更多数据源,进行数据库直连操作,下面以MySQL的两个库为例(Oracle也就换个驱动类与连接串)。
(本文阅读大概花费两分钟)
技术条件:
springboot 2.5.3 (即springframework 5.3.9)
MySQL 5.7
mybatis-plus 3.5.0
dynamic-datasource 3.5.0
druid 1.2.9
idea开发工具、maven 3.3.9
1、导入相关依赖
2、建立两个数据库mydb(表 user)、db2(表t_class),并分别建一张表
3、编写application.yaml配置文件
4、编写po类、dao层、一个接口测试类
其中,在dao的类加上对应的数据源标识符,使用此注解com.baomidou.dynamic.datasource.annotation.DS
5、启动项目,查看结果
至此,多数据源环境集成成功;当然这里只使用了查询功能,对应事务相关的下一回合文章再做讨论啥。
SpringBoot + ES基本项目搭建实例
之前一直没有写ES相关的博文,现在开始补课,预计5-6篇博文将es的使用姿势展示给各位小伙伴;本文将作为es结合springboot的第一篇博文,基本项目环境搭建
本项目借助 SpringBoot 2.2.1.RELEASE + maven 3.5.3 + IDEA 进行开发
开一个web服务用于测试
配置文件application.yml,注意下面的配置信息,下面采用的是由我们自己来解析配置的方式
说明
上面配置介绍的是一种偏基础的es文档操作姿势,相比较于封装得更好的 spring-boot-starter-data-elasticsearch ,使用更加灵活
接下来我们基于 RestHighLevelClient 来操作es,首先第一步就是需要初始化这实例
注意上面的实现,用户名 + 密码并没有使用,当es设置了用户名、密码之后,是通过每次请求时,在请求头基于Basic Auth方式进行身份验证的;后面会介绍到
我们在本机搭建了一个es用于模拟测试,在上面的配置完之后,就可以直接与es进行交互了
下面是一个简单的使用姿势
注意上面的实现,有下面几个重要知识点
身份验证
采用Basic Auth方式进行身份校验,简单来说就是在请求头中添加一个
• key = Authorization
• value = "Basic " + base64(user + ":" + pwd)
访问姿势
上面是一个根据 id 查询文档的实例,简单可以理解为三步
•创建: XxRequest
•添加请求头: RequestOptions.Builder.addHeader
•执行: client.get(xxRequest, RequestOptions)
•工程:
•源码:
尽信书则不如,以上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激
下面一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛
•一灰灰Blog个人博客
•一灰灰Blog-Spring专题博客
[1] 200605-Centos 安装ElasticSearch - 一灰灰Blog:
[2] 210329-Elastic Kibana安装与基本使用 - 一灰灰Blog:
IntelliJ IDEA搭建SpringBoot项目
若不使用镜像,会发现maven项目会同步半天都不成功。
pom.xml报错日志:
getInputStream() must not be called against a directory: apache-maven-3.6.3/conf
通过修改application.yml文件即可,注意SpringBoot2.0前后的写法不一样。
2.0及之前:
server.context-path=/myprojectname
2.0之后:
server.servlet.context-path=/myprojectname
而且还有个重点我要强调: key与value之间一定要空格 。
建议远程部署war包之前,先在本地Tomcat部署测试,再去远程部署测试。
下面的都是打war包然后部署
上面的这些博客说的可能千奇百怪,我实践总结了一下,就两点:
1)pom.xml配置打包类型为war
packagingwar/packaging
2)定义ServletInitializer类
定义ServletInitializer类,和Application同一目录:
当然也可以把这个configure方法直接写到Application类里。
3)生成war包放到tomcat里
第一步: pom.xml里添加依赖
第二步:写html
怎么让html适配手机的大小:
在head里添加 meta charset="UTF-8" name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no"
第三步:配置application.yml文件
这里的mode: LEGACYHTML5需要依赖第一步pom.xml中依赖的nekohtml,代表不是严格规范的HTML5,否则html5很容易报错。
第四步:新建Controller
1)注意@Controller不是@RestController,后者这个接口会返回普通的字符串,而不是一个网页。
2)注意pom.xml中的 spring-boot-starter-thymeleaf ,没有这个的话,接口会报404。
电脑经常性的重启,导致IDEA意外关闭,然后项目就不被识别为Maven项目了,View-ToolWindow-MavenProject就没有这个选项。application.yml修改也没有生效。
解决办法:关闭项目重新import导入即可
从零开始新建Springboot项目之项目启动(一)
一般都是使用搭建好的框架进行业务逻辑开发,一直不清楚整个项目是如何从零到一构建出来的。所以开一个帖子,记录一下一个springboot项目是如何构建的。
使用的工具为idea
选择maven或者spring initializr都可以。spring initializr会在pom中自动添加一些springboot用到的jar包,此处选择maven。起好名字后,一路next即可
从实际开发角度,构建Module不是必选项。但学习嘛,还是要知道是怎么创建的
右键项目名称 - New - Module
依然选择maven,起名字即可。一般命名为:XXXX-Controller,XXXX-Service等等
建好后,pom中会多出以下内容
(放弃多模块配置)
可在此处搜索 mvnrepository
首先添加parent,作为父级依赖。位置在 project/project 的下一级,与 groupIdorg.example/groupId 同级,
在 parent/parent 同级新建 dependency/dependency 标签,引入web项目需要的依赖
如果是多模块的项目,需要在每一个模块的pom文件中,添加其依赖的其他模块。例如controller依赖service,则需要在controller的pom文件中添加以下依赖信息。如果不是多模块项目,可以忽略
在java路径下新建顶级路径 com.tardis ,在此路径下新建文件 CustomerApplication (名字随意)。新建 controller , service 的 package 。在 CustomerApplication 添加如下方法
文件的层级关系如图
在 resource 目录下,新建 application.yml , application.dev.yml , application.prod.yml 文件,作为总体,开发环境,生产环境的配置文件。配置文件格式为 properties , yml 均可,此处使用 yml ,看起来比较简洁清晰
层级关系如图
为了更好地演示效果,可以先写一个简单的Controller进行测试,在controller文件夹中新建class,名字随意。文件层级如图。放一个最简单的接口。
使用postman调用,返回结果如下