# 74.1 配置数据源

自定义`DataSource`类型的`@Bean`可以覆盖默认设置，正如[Section 24.7.1, “Third-party configuration”](https://github.com/cwiki-us-spring-guides/Spring-Boot-Reference-Guide/tree/0047aa8098a650dde0c93f4d2e91754c83468c4b/IV.%20Spring%20Boot%20features/24.7.1.%20Third-party%20configuration.md)解释的那样，你可以很轻松的将它跟一系列`Environment`属性绑定：

```java
@Bean
@ConfigurationProperties(prefix="datasource.fancy")
public DataSource dataSource() {
    return new FancyDataSource();
}
```

```
datasource.fancy.jdbcUrl=jdbc:h2:mem:mydb
datasource.fancy.username=sa
datasource.fancy.poolSize=30
```

Spring Boot也提供了一个工具类`DataSourceBuilder`用来创建标准的数据源。如果需要重用`DataSourceProperties`的配置，你可以从它初始化一个`DataSourceBuilder`：

```java
@Bean
@ConfigurationProperties(prefix="datasource.mine")
public DataSource dataSource(DataSourceProperties properties) {
    return properties.initializeDataSourceBuilder()
            // additional customizations
            .build();
}
```

在此场景中，你保留了通过Spring Boot暴露的标准属性，通过添加`@ConfigurationProperties`，你可以暴露在相应的命命名空间暴露其他特定实现的配置， 具体详情可参考'Spring Boot特性'章节中的[Section 29.1, “Configure a DataSource”](https://github.com/cwiki-us-spring-guides/Spring-Boot-Reference-Guide/tree/0047aa8098a650dde0c93f4d2e91754c83468c4b/IV.%20Spring%20Boot%20features/29.1.%20Configure%20a%20DataSource.md)和[DataSourceAutoConfiguration](https://github.com/spring-projects/spring-boot/tree/v1.4.1.RELEASE/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jdbc/DataSourceAutoConfiguration.java)类源码。
