SpringBoot - 数据源(1) - 使用默认数据源

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mytt_10566/article/details/81058637

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 。
如果你使用spring-boot-starter-jdbc或spring-boot-starter-data-jpa的starter POMs,将会自动添加对tomcat-jdbc的依赖。

注:如果你定义自己的DataSource bean,自动配置不会发生。


一、配置默认数据源tomcat-jdbc

1. pom.xml

<!-- jdbc 自动添加tomcat-jdbc的依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- mysql -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.36</version>
</dependency>
2. application.yml

主配置文件,通过spring.datasource.*配置数据源相关特性。默认使用tomcat-jdbc数据源,这里简单配置下即可使用。

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/datasource?useUnicode=true&characterEncoding=utf8
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver

3. 测试数据源

@RunWith(SpringRunner.class)
@SpringBootTest
public class DataSourceTest {
    @Autowired
    private DataSource dataSource;

    @Test
    public void testDataSource() {
        System.out.println(dataSource);
    }
}

输出结果:

可以看出是使用的是org.apache.tomcat.jdbc.pool.DataSource,也就是tomcat-jdbc

org.apache.tomcat.jdbc.pool.DataSource@6b00ad9{ConnectionPool[defaultAutoCommit=null; defaultReadOnly=null; defaultTransactionIsolation=-1; defaultCatalog=null; driverClassName=com.mysql.jdbc.Driver; maxActive=100; maxIdle=100; minIdle=20; initialSize=20; maxWait=10000; testOnBorrow=false; testOnReturn=false; timeBetweenEvictionRunsMillis=5000; numTestsPerEvictionRun=0; minEvictableIdleTimeMillis=60000; testWhileIdle=true; testOnConnect=false; password=********; url=jdbc:mysql://localhost:3306/datasource; username=root; validationQuery=/* ping */ SELECT 1; validationQueryTimeout=-1; validatorClassName=null; validationInterval=3000; accessToUnderlyingConnectionAllowed=true; removeAbandoned=false; removeAbandonedTimeout=60; logAbandoned=false; connectionProperties=null; initSQL=null; jdbcInterceptors=null; jmxEnabled=true; fairQueue=true; useEquals=true; abandonWhenPercentageFull=0; maxAge=0; useLock=false; dataSource=null; dataSourceJNDI=null; suspectTimeout=0; alternateUsernameAllowed=false; commitOnReturn=false; rollbackOnReturn=false; useDisposableConnectionFacade=true; logValidationErrors=false; propagateInterruptState=false; ignoreExceptionOnPreLoad=false; useStatementFacade=true; }


二、使用默认的Hikari、Dbcp、Dbcp2 数据源

方式一:

通过在pom中排除tomcat-jdbc,只添加任意一个数据源依赖即可;application.yml的配置同上。

<!-- 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>

<!-- dbcp -->
<!--<dependency>
	<groupId>commons-dbcp</groupId>
	<artifactId>commons-dbcp</artifactId>
</dependency>-->

<!-- dbcp2 -->
<!--<dependency>
	<groupId>org.apache.commons</groupId>
	<artifactId>commons-dbcp2</artifactId>
</dependency>-->

方式二:

在application.yml中通过spring.datasource.type=[数据源]指定数据源类型,pom中添加对应数据源依赖即可。

spring: 
	datasource: 
		type: com.zaxxer.hikari.HikariDataSource
#    org.apache.tomcat.jdbc.pool.DataSource
#    org.apache.commons.dbcp.BasicDataSource
#    org.apache.commons.dbcp2.BasicDataSource

方式三:

手动初始化DataSource,不使用自动配置生成的数据源。


参考:https://blog.csdn.net/pengjunlee/article/details/80081231


猜你喜欢

转载自blog.csdn.net/mytt_10566/article/details/81058637
今日推荐