要配置自己的数据源,请在配置中定义该类型的@Bean。Spring Boot将在任何需要的地方重用数据源,包括数据库初始化.
Spring Boot提供了一个实用工具构建器类DataSourceBuilder,可用于创建一个标准数据源(如果它位于类路径中)。 构建器可以根据类路径中可用的内容检测要使用的内容。它还可以根据JDBC url自动检测驱动程序。
DataSourceBuilder提供了对数据库连接的支持,源码如下:
如下展示了默认采用的数据源
单数据源配置
第一种配置
- application.properties
- CustomDateSource.java
第二种配置
指定使用哪种类型的连接池
- application.properties
- CustomDateSource.java
package com.niugang.config; import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import com.zaxxer.hikari.HikariDataSource; /** * 自定义数据源配置 * * @author niugang * */ @Configuration public class CustomDateSource { /** * @return */ @Bean @ConfigurationProperties(prefix = "app.datasource") public HikariDataSource dataSource() { return (HikariDataSource)DataSourceBuilder.create().type(HikariDataSource.class).build(); } }
第三种配置
您甚至可以进一步利用DataSourceProperties为您提供的功能默认的嵌入式数据库,如果没有提供url,则为其提供合理的用户名和密码。您可以很容易地从任何DataSourceProperties的状态初始化DataSourceBuilder也可以自动注入一个Spring Boot创建的。但是,这将把配置分为两个名称空间:spring.datasource上的url、用户名、密码、类型和驱动程序以及您的自定义名称空间(app.datasource)上的其余部分。为了避免这种情况,您可以在自定义名称空间上重新定义一个自定义DataSourceProperties(即采用统一化的命名空间).
以上意思就是配置url,用户名,类型,驱动按照spring.datasource之前提供的去配置,即就是按照DataSourceProperties中拥有的属性名配置.
数据源特有的,按照数据源配置。
- application.properties
- CustomDateSource .java
//因为DataSourceProperties负责为您处理url将转化为jdbcUrl等等,如果有其他属性,DataSourceProperties您可以进行配置
多数据源配置
如果需要配置多个数据源,必须将其中一个DataSource设置为 @Primary标记为以后的各种自动配置,以便能够按类型获得一个。
- application.properties
app.datasource.foo.type=com.zaxxer.hikari.HikariDataSource #数据源类型
app.datasource.foo.maximum-pool-size=30
app.datasource.bar.url=jdbc:mysql://localhost/test
app.datasource.bar.username=dbuser
app.datasource.bar.password=dbpass
app.datasource.bar.max-total=30
- CustomDateSource.java
@Bean @Primary @ConfigurationProperties("app.datasource.foo") public DataSourceProperties fooDataSourceProperties() { return new DataSourceProperties(); } @Bean @Primary @ConfigurationProperties("app.datasource.foo") public DataSource fooDataSource() { return fooDataSourceProperties().initializeDataSourceBuilder().build(); } @Bean @ConfigurationProperties("app.datasource.bar") public DataSourceProperties barDataSourceProperties() { return new DataSourceProperties(); } @Bean @ConfigurationProperties("app.datasource.bar") public DataSource barDataSource() { return barDataSourceProperties().initializeDataSourceBuilder().build(); }
微信公众号