【发布时间】: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 找到任何规范
【问题讨论】: