Springboot系列之二:配置数据源
https://blog.csdn.net/pengjunlee/article/details/80081231
默认数据源
Springboot默认支持4种数据源类型,定义在 org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration 中,分别是:
- org.apache.tomcat.jdbc.pool.DataSource
- com.zaxxer.hikari.HikariDataSource
- org.apache.commons.dbcp.BasicDataSource
- org.apache.commons.dbcp2.BasicDataSource
对于这4种数据源,当 classpath 下有相应的类存在时,Springboot 会通过自动配置为其生成DataSource Bean,DataSource Bean默认只会生成一个,四种数据源类型的生效先后顺序如下:Tomcat--> Hikari --> Dbcp --> Dbcp2 。
添加依赖与配置
在Springboot 使用JDBC可直接添加官方提供的 spring-boot-start-jdbc 或者 spring-boot-start-data-jpa 依赖。
-
<parent>
-
<groupId>org.springframework.boot</groupId>
-
<artifactId>spring-boot-starter-parent</artifactId>
-
<version>1.4.1.RELEASE</version>
-
</parent>
-
<dependencies>
-
<!-- 添加MySQL依赖 -->
-
<dependency>
-
<groupId>mysql</groupId>
-
<artifactId>mysql-connector-java</artifactId>
-
</dependency>
-
<!-- 添加JDBC依赖 -->
-
<dependency>
-
<groupId>org.springframework.boot</groupId>
-
<artifactId>spring-boot-starter-jdbc</artifactId>
-
</dependency>
-
</dependencies>
在核心配置application.properties或者application.yml文件中添加数据源相关配置。
# application.properties文件中添加如下配置: spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8 spring.datasource.driverClassName=com.mysql.jdbc.Driver spring.datasource.username=root spring.datasource.password=123456
# application.yml文件中添加如下配置:
spring:
datasource:
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8
driverClassName: com.mysql.jdbc.Driver
username: root
password: 123456
切换默认数据源
方式一 排除其他的数据源依赖,仅保留需要的数据源依赖;
方式二 通过在核心配置中通过spring.datasource.type属性指定数据源的类型;
方式一
Springboot默认支持的4种数据源Maven依赖如下:
-
<!-- 添加Tomcat-JDBC依赖 -->
-
<dependency>
-
<groupId>org.apache.tomcat</groupId>
-
<artifactId>tomcat-jdbc</artifactId>
-
</dependency>
-
<!-- 添加HikariCP依赖 -->
-
<dependency>
-
<groupId>com.zaxxer</groupId>
-
<artifactId>HikariCP</artifactId>
-
</dependency>
-
<!-- 添加DBCP依赖 -->
-
<dependency>
-
<groupId>commons-dbcp</groupId>
-
<artifactId>commons-dbcp</artifactId>
-
</dependency>
-
<!-- 添加DBCP2依赖 -->
-
<dependency>
-
<groupId>org.apache.commons</groupId>
-
<artifactId>commons-dbcp2</artifactId>
-
</dependency>
当我们引入spring-boot-start-jdbc依赖时,其实里面就包含了 Tomcat-JDBC 的依赖,如果想要切换为其他的数据源类型,需要先将Tomcat-JDBC 依赖排除,再添加上需要的数据源的依赖,以使用HikariCP数据源为例,依赖配置如下。
-
<!-- 添加JDBC依赖 -->
-
<dependency>
-
<groupId>org.springframework.boot</groupId>
-
<artifactId>spring-boot-starter-jdbc</artifactId>
-
<exclusions>
-
<!-- 排除Tomcat-JDBC依赖 -->
-
<exclusion>
-
<groupId>org.apache.tomcat</groupId>
-
<artifactId>tomcat-jdbc</artifactId>
-
</exclusion>
-
</exclusions>
-
</dependency>
-
<!-- 添加HikariCP依赖 -->
-
<dependency>
-
<groupId>com.zaxxer</groupId>
-
<artifactId>HikariCP</artifactId>
-
</dependency>
方式二
此外,还可以通过在核心配置中通过添加spring.datasource.type = [数据源类型] 来指定数据源的类型;
spring.datasource.type=com.zaxxer.hikari.HikariDataSource # spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource # spring.datasource.type=org.apache.commons.dbcp.BasicDataSource # spring.datasource.type=org.apache.commons.dbcp2.BasicDataSource
第三方数据源
如果不想使用Springboot默认支持的4种数据源,还可以选择使用其他第三方的数据源,例如:Druid、c3p0等。
以使用Druid数据源为例。
添加依赖与配置
在pom文件中引入第三方数据源依赖。
-
<parent>
-
<groupId>org.springframework.boot</groupId>
-
<artifactId>spring-boot-starter-parent</artifactId>
-
<version>1.4.1.RELEASE</version>
-
</parent>
-
<dependencies>
-
<!-- 添加MySQL依赖 -->
-
<dependency>
-
<groupId>mysql</groupId>
-
<artifactId>mysql-connector-java</artifactId>
-
</dependency>
-
<!-- 添加JDBC依赖 -->
-
<dependency>
-
<groupId>org.springframework.boot</groupId>
-
<artifactId>spring-boot-starter-jdbc</artifactId>
-
</dependency>
-
<!-- 添加Druid依赖 -->
-
<dependency>
-
<groupId>com.alibaba</groupId>
-
<artifactId>druid</artifactId>
-
<version>1.1.6</version>
-
</dependency>
-
</dependencies>
核心配置文件中的添加数据源相关配置与使用默认数据源时的配置相同,此处不再重复贴出。
定义数据源
使用注解@Bean 创建一个DataSource Bean并将其纳入到Spring容器中进行管理即可。
-
@Configuration
-
public class DataSourceConfig {
-
-
@Autowired
-
private Environment env;
-
-
@Bean
-
public DataSource getDataSource() {
-
DruidDataSource dataSource = new DruidDataSource();
-
dataSource.setUrl(env.getProperty("spring.datasource.url"));
-
dataSource.setUsername(env.getProperty("spring.datasource.username"));
-
dataSource.setPassword(env.getProperty("spring.datasource.password"));
-
return dataSource;
-
}
-
}
或者:
-
@Configuration
-
@ConfigurationProperties(prefix = "spring.datasource")
-
public class DataSource2Config {
-
-
private String url;
-
private String username;
-
private String password;
-
-
@Bean
-
public DataSource getDataSource() {
-
DruidDataSource dataSource = new DruidDataSource();
-
dataSource.setUrl(url);
-
dataSource.setUsername(username);// 用户名
-
dataSource.setPassword(password);// 密码
-
return dataSource;
-
}
-
-
public String getUrl() {
-
return url;
-
}
-
-
public void setUrl(String url) {
-
this.url = url;
-
}
-
-
public String getUsername() {
-
return username;
-
}
-
-
public void setUsername(String username) {
-
this.username = username;
-
}
-
-
public String getPassword() {
-
return password;
-
}
-
-
public void setPassword(String password) {
-
this.password = password;
-
}
-
}
推荐阅读
-
SpringBoot整合MyBatisPlus配置动态数据源的方法
-
SpringBoot系列-整合Mybatis(XML配置方式)
-
Springboot+mybatis+druid 配置多数据源
-
SpringBoot Mybatis如何配置多数据源并分包
-
037.[转] springboot 配置多个数据源
-
springboot系列(三)配置文件详解
-
SpringBoot整合JPA数据源方法及配置解析
-
Springboot 系列(三)Spring Boot 自动配置
-
DB数据源之SpringBoot+MyBatis踏坑过程(二)手工配置数据源与加载Mapper.xml扫描
-
SpringBoot系列(十二)过滤器配置详解