数据库连接

starter-data-jdbc

分析 SpringBoot 的流程,就是导入 starter,它可以帮我们所有可以默认配置的东西都配置了,除了数据库类型和数据库配置。

327.jpg

可以看到为我们导入了 Spring 的 JDBC 数据库相关包 (beans,tx,core),一个数据库连接池 HikariCP,然后就是 Spring-Data 的东西了。

我们现在导入数据库驱动,因为 starter-data-jdbc 已经仲裁版本:

1
<mysql-connector-java.version>8.0.23</mysql-connector-java.version>

所以我们引入数据库驱动的时候,其实是可以不写版本号的,但是因为驱动版本过高,所以修改一下降低驱动版本。

1
2
3
4
5
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>

剩下的事情就是写数据库的配置了,通过 DataSourceAutoConfiguration 可以看到使用的 DataSourceProperties 的 @ConfigurationProperties 是为 spring.datasource 前缀,我们就可以再 yaml 中配置:

1
2
3
4
5
6
spring:
datasource:
url: jdbc:mysql://localhost:3306/mybatis
username: root
password: XXXXXXX
driver-class-name: com.mysql.jdbc.Driver

项目已启动,就会运行默认的连接池 HikariCP 来连接数据库。

使用 Druid

阿里的 Druid 虽然性能比不过 HikariCP,但是提供了很多很方便使用的生态页面,我们来用用 Druid 试试。

使用方法很简单,加入 Druid 的 starter 之后,引入一堆 AutoConfiguration 和 Properties 自动配置,就可以直接使用了。至于更多功能的 Druid 定制化,则不在讨论范围内。

1
2
3
4
5
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.6</version>
</dependency>

整合 MyBatis

同样是引入 MyBatis 的 starter 启动器:

1
2
3
4
5
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>

从使用的 MyBatisProperties 可以看出来,绑定的配置前缀是 mybatis。

1
2
3
@ConfigurationProperties(prefix = "mybatis")
public class MybatisProperties {
}

因此我们就可以在 application.yaml/properties 中配置 MyBatis 了。

以前我们需要 Config.xml 和 Mapper.xml,但是现在有了自动配置之后,我们就可以利用 application.yaml/properties 的 mybatis 前缀配置将 Config.xml 配置文件给省略掉:

1
2
3
4
mybatis:
configuration:
map-underscore-to-camel-case: true #驼峰和下划线映射
mapper-locations: classpath:MyBatis/Mapper/*.xml #mappers 位置定位

指明了 mapper.xml 还需要将 Mapper 的接口也放入 IOC 容器中才可以,这里使用注解 @Mapper (标注在接口处) 或者 MapperScanner (建议标注在和数据库配置相关的 @Configuration 的配置类上) 来注册 Mapper 接口。

单元测试

还是引入 starter:

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>

需要注意的是 SpringBoot 默认是集成了 JUnit5 的,不包含其他的 JUnit 版本,不同的是不需要引入 Spring 环境了,在测试类的开头用 @SpringBootTest 就可以直接使用 SpringBoot 环境了。

剩下的东西大部分和 JUnit4 差不多,以后做项目深入学一学,练一练。

指标监控 Actuator

SpringBoot 已经内置集成了 Actuator 这个东西,我们只需要引入 spring-boot-starter-actuator 即可。

具体的内容有点复杂,不太想学了,以后再搞吧……