概述:
技术栈方面,会采用Spring Boot 2.0 作为底层框架,主要为了后续能够接入Spring Cloud 进行学习拓展。并且Spring Boot 2.0基于Spring5,也可以提前预习一些Spring5的新特性。后续技术会在相应博客中提出。
项目GitHub地址:Spring-Blog
介绍一下目录结构:
- Spring-Blog(Parent 项目)
- Spring-Blog-common( Util 模块)
- Spring-Blog-business(Repository模块)
- Spring-Blog-api (Web 模块)
- Spring-Blog-webflux (基于Spring Boot 2.0 的 Web模块)
为了让各位朋友能够更好理解这一模块的内容,演示代码将存放在Spring Boot 项目下:
Github 地址:示例代码
1、DataSource
在开始讲解前,我们需要先构建后我们的运行环境。Spring Boot 引入 Mybatis 的教程 可以参考 传送门 。这里我们不细述了,首先来看一下我们的目录结构:
有使用过Spring Boot 的童鞋应该清楚,当我们在application.properties 配置好了我们的数据库连接信息后,Spring Boot 将会帮我们自动装载好DataSource。但如果我们需要进行读写分离操作是,如何配置自己的数据源,是我们必须掌握的。
首先我们来看一下配置文件中的信息:
spring.datasource.url=jdbc:mysql://localhost:3306/charles_blog2
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#别名扫描目录
mybatis.type-aliases-package=com.jaycekon.demo.model
#Mapper.xml扫描目录
mybatis.mapper-locations=classpath:mybatis-mappers/*.xml
#tkmapper 帮助工具
mapper.mappers=com.jaycekon.demo.MyMapper
mapper.not-empty=false
mapper.identity=MYSQL
1.1 DataSourceBuilder
我们首先来看一下使用 DataSourceBuilder 来构建出DataSource:
@Configuration
@MapperScan("com.jaycekon.demo.mapper")
@EnableTransactionManagement
public class SpringJDBCDataSource {
/**
* 通过Spring JDBC 快速创建 DataSource
* 参数格式
* spring.datasource.master.jdbcurl=jdbc:mysql://localhost:3306/charles_blog
* spring.datasource.master.username=root
* spring.datasource.master.password=root
* spring.datasource.master.driver-class-name=com.mysql.jdbc.Driver
*
* @return DataSource
*/
@Bean
@ConfigurationProperties(prefix = "spring.datasource.master")
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
}
从代码中我们可以看出,使用DataSourceBuilder 构建DataSource 的方法非常简单,但是需要注意的是:
-
DataSourceBuilder 只能自动识别配置文件中的 jdbcurl,username,password,driver-class-name等命名,因此我们需要在方法体上加上 @ ConfigurationProperties 注解。
-
数据库连接地址变量名需要使用 jdbcurl
-
数据库连接池使用 com.zaxxer.hikari.HikariDataSource
执行单元测试时,我们可以看到 DataSource 创建以及关闭的过程。
1.2 DruidDataSource
除了使用上述的构建方法外,我们可以选择使用阿里提供的 Druid 数据库连接池创建 DataSource
@Configuration
@EnableTransactionManagement
public class DruidDataSourceConfig {
@Autowired
private DataSourceProperties properties;
@Bean
public DataSource dataSo