【问题标题】:how does spring boot auto configure the driver of a special datasource?spring boot如何自动配置特殊数据源的驱动?
【发布时间】:2021-08-30 04:36:39
【问题描述】:

没有spring boot,我们必须指定数据源的详细信息,对吗?

@Configuration
public class DataSourceConfig {
    
    @Bean
    public DataSource getDataSource() {
        DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
        dataSourceBuilder.driverClassName("org.h2.Driver");
        dataSourceBuilder.url("jdbc:h2:mem:test");
        dataSourceBuilder.username("SA");
        dataSourceBuilder.password("");
        return dataSourceBuilder.build();
    }
}

使用spring boot,我们甚至不需要做任何事情,我知道spring boot会检测是否有一个jar包含数据源来决定是否创建数据源bean。我看到源代码来自org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration

@Configuration(proxyBeanMethods = false)
@Conditional(PooledDataSourceCondition.class)
@ConditionalOnMissingBean({ DataSource.class, XADataSource.class })
@Import({ DataSourceConfiguration.Hikari.class, DataSourceConfiguration.Tomcat.class,
        DataSourceConfiguration.Dbcp2.class, DataSourceConfiguration.OracleUcp.class,
        DataSourceConfiguration.Generic.class, DataSourceJmxConfiguration.class })
protected static class PooledDataSourceConfiguration {

}

但我的问题是 spring boot 如何知道驱动程序类或 url 以及每个不同的数据库?我无法从 spring-boot-autoconfigure-2.5.0.jar 找到任何规范

【问题讨论】:

    标签: spring-boot datasource


    【解决方案1】:

    来自文档中的DataSource Configuration

    Spring Boot 可以从 URL 推导出大部分数据库的 JDBC 驱动类。如果需要指定具体的类,可以使用spring.datasource.driver-class-name属性。

    所以开始时不要配置任何东西,只需将 JDBC 驱动程序放在类路径上。如果不起作用,您可以手动配置它。

    【讨论】:

    • 有没有spring boot的源码可以展示它是怎么做的?
    猜你喜欢
    • 2017-06-04
    • 2020-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-02
    • 2015-02-26
    • 2019-01-08
    • 2022-08-19
    相关资源
    最近更新 更多