简介
前面两章在介绍Spring Boot整合MyBatis的时候简单的看了一下Spring Boot如何去配置单一的数据源.并没有详细的单独去看数据源的配置.
本文就简要介绍下在Spring Boot中对内置内存数据库H2,多数据源等的配置.
由于本文档的代码基本都是基于MyBatis搭建,所以关于Spring-Data-JPA的内容并不能展示出来,Spring Boot中对于Repository/Dao的设计并不能完美的体现出来,不过,各个持久层框架自有它自己的好处,无所谓谁坏谁差,还是要看我们具体怎么去应用。
对内置内存数据库的支持
基于Spring Boot的自动化配置,其实我们也仅仅需要在pom.xml文件中引入我们想使用的内置内存数据库的jar依赖即可。Spring Boot会自动扫描classpath下是否有某个jar包,如果有,就加载默认配置。
-
pom.xml引入依赖
基于mybatis的配置:
使用内置内存数据库需要引入`spring-jdbc`,其在`mybatis-spring-boot-starter`已经包含。
实际使用过程中,因为内置的内存数据库并不能保留表结构,所以,如果使用JPA就需要在配置文件中将ddl语句设置为`spring.jpa.hibernate.ddl-auto=create`.
如果使用mybatis,我们也可以在application.yml或者application.properties配置schema:db/xx.sql来执行数据库初始化的sql文件.
使用生产数据库
-
### Spring Boot自动配置对数据库连接池的选择原则:
-
优先选择使用Tomcat的数据库连接池
-
如果存在HikariCP,则启用
-
如果存在Commons DBCP,则启用
-
如果存在Commons DBCP2,则启用
按照官方文档的说法,我们在引入`mybatis-spring-boot-starter`其实已经引入了`tomcat-jdbc`的依赖,也就使用了tomcat的数据库连接池。
当然我们也可以配置自己的数据库连接池,比如配置阿里爸爸的`Druid`来作为我们的数据库连接池工具
使用JDBC
请看: https://github.com/sunshineasbefore/veryjava.spring.boot/tree/master/jdbc
两个数据源的配置
-
最基本的配置
进阶
今天多说一点就是,两个数据源分别针对不同的包下的mapper文件:
-
JDBCDataSourceConfig
-
SSABDataSourceConfig
-
对比这两个类,其不同点在于
-
@MapperScan的扫描路径不一致,这个的用处主要在于用不同的包区分不同数据源对于数据的操作.
-
@ConfigurationProperties的prefix不一致,这个用来区分不同的数据源.
-
JDBCDataSourceConfig类中的dataSource()多了一个@Primary注解,指定某一个dataSource为主要的datasource.
代码
本文限于篇幅原因,不能展示所有的代码,如果想要完整的代码示例,请移步 https://github.com/sunshineasbefore/veryjava.spring.boot/tree/master/datasources
支持请点赞,不喜勿喷.
每天一点点,成长多一点.