SpringBoot 配置文件
spring:
datasource:
username: kidjoker
password: 0okm(IJN123
url: jdbc:mysql://104.168.159.218:63306/springbootdemo
driver-class-name: com.mysql.cj.jdbc.Driver
-
效果
- 使用com.zaxxer.hikari.HikariDataSource作为数据源
- 数据源相关配置都在DataSourceProperties里面
-
数据源自动配置原理——org.springframework.boot.autoconfigure.jdbc
-
参考DataSourceConfiguration,根据配置创建数据源,使用spring.datasource.type指定自定义的数据源
-
SpringBoot默认支持的数据源:
-
org.apache.commons.dbcp2.BasicDataSource com.zaxxer.hikari.HikariDataSource org.apache.tomcat.jdbc.pool.DataSource
-
自定义数据源
-
比如 type:com.alibaba.druid.pool.DruidDataSource -
@ConditionalOnMissingBean({DataSource.class}) @ConditionalOnProperty( name = {"spring.datasource.type"} ) static class Generic { Generic() { } @Bean DataSource dataSource(DataSourceProperties properties) { return properties.initializeDataSourceBuilder().build(); } } -
public DataSourceBuilder<?> initializeDataSourceBuilder() { //通过责任链模式设置属性 return DataSourceBuilder.create(this.getClassLoader()) .type(this.getType()) .driverClassName(this.determineDriverClassName()) .url(this.determineUrl()) .username(this.determineUsername()) .password(this.determinePassword()); } -
public T build() { //获取class的类型 Class<? extends DataSource> type = this.getType(); //利用反射创建type的数据源 DataSource result = (DataSource)BeanUtils.instantiateClass(type); this.maybeGetDriverClassName(); //绑定相关属性 this.bind(result); return result; }
-
-
DataSourceInitializer:ApplicationListener
-
作用
-
运行建表语句
-
运行插入数据的语句
-
schema-*.sql data-*.sql 默认规则:schema.sql,schema-all.sql 自定义规则: schema: - classpath:xxxx.sql
-
-
-
操作数据库:自动配置了jdbcTemplate操作
-
-
遇到问题
Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'- 因为老的jdbc驱动不支持