SpringBoot默认使用HikariDataSource数据源方式
目录
- SpringBoot默认使用HikariDataSource数据源
- 定义
- 数据库连接
- HikariDataSource默认配置
SpringBoot默认使用HikariDataSource数据源
定义
数据源:存储了所有建立数据库连接的信息。通过提供正确的数据源名称,你可以找到相应的数据库连接。
数据源负责维持一个数据库连接池,当程序创建数据源实例时,系统会一次性的创建多个数据库连接,并把这些数据连接保存在连接池中。当程序需要进行数据库访问时,无须重新获得数据库连接,而是从连接池中取出一个空闲的数据库连接,当程序使用数据库连接访问结束后,无须关闭数据库连接,而是将数据库连接归还给连接池即可。通过这种方式可以避免频繁的获取数据库连接,关闭数据库连接所导致的性能下降。
全局配置文件application.yml中spring.datasource下只配置了账号,密码,数据库地址,连接驱动,因为默认使用的是HikariDataSource数据源。
【SpringBoot默认使用HikariDataSource数据源方式】如果是自定义数据源,可以使用
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
测试:
@RunWith(SpringRunner.class)@SpringBootTestpublic class HorseApplicationTests {/*** Spring Boot 默认已经配置好了数据源,程序员可以直接 DI 注入然后使用即可*/@ResourceDataSource dataSource; @Testpublic void contextLoads() throws SQLException {System.out.println("数据源>>>>>>" + dataSource.getClass()); }
运行结果:
数据源>>>>>>class com.zaxxer.hikari.HikariDataSource
数据库连接
有了数据源,就可以拿到数据库连接,使用JdbcTemplate 进行CRUD数据库,即使没有使用第三方数据库操作框架,如:Mybatis,Hibernate,等Spring本身就可以对原生的JDBC做了轻量级的封装,即时JdbcTemplate.
SpringBoot不仅提供了默认的数据源,同时默认已经配置好了JdbcTemplate放在容器中,程序员只需自己注入即可使用。
JdbcTemplate的自动装配原理是依赖JdbcTemplateAutoConfiguration类。
HikariDataSource默认配置
com.zaxxer.hikari.HikariConfigprivate static final long IDLE_TIMEOUT = MINUTES.toMillis(10); private static final long MAX_LIFETIME = MINUTES.toMillis(30); private static final int DEFAULT_POOL_SIZE = 10; private static boolean unitTest = false; // Properties changeable at runtime through the HikariConfigMXBean//private volatile long connectionTimeout; private volatile long validationTimeout; private volatile long idleTimeout; private volatile long leakDetectionThreshold; private volatile long maxLifetime; private volatile int maxPoolSize; private volatile int minIdle; private volatile String username; private volatile String password;
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
推荐阅读
- 由浅入深理解AOP
- 【译】20个更有效地使用谷歌搜索的技巧
- Activiti(一)SpringBoot2集成Activiti6
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询
- SpringBoot调用公共模块的自定义注解失效的解决
- 解决SpringBoot引用别的模块无法注入的问题
- iOS中的Block
- Linux下面如何查看tomcat已经使用多少线程