我在Application.java中创建了这样的数据源:
@Bean
@ConfigurationProperties("datasource")
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
但它返回一个带池的托管数据源。由于我正在使用的特定类型的数据库,我想禁用池。
最简单的方法是什么?
答案 0 :(得分:3)
DataSourceBuilder
有一个名为type(Class)
的方法,您可以在其中指定要用作DataSource实现的类。所以在你的情况下它看起来像这样:
@Bean
@ConfigurationProperties("datasource")
public DataSource dataSource() {
return DataSourceBuilder.create().type(SimpleDriverDataSource.class).build();
}
答案 1 :(得分:1)
这是我使用的解决方案,改编自 Liquibase 的 SpringBoot 2.5 自动配置,此处讨论了其案例:https://github.com/spring-projects/spring-boot/issues/24944 (代码参考:https://github.com/wilkinsona/spring-boot/blob/gh-24944/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration.java)
@Bean
@ConfigurationProperties("datasource")
public DataSourceProperties dataSourceProperties() {
return new DataSourceProperties();
}
@Bean
public DataSource dataSource(DataSourceProperties dataSourceProperties) {
String url = dataSourceProperties.determineUrl();
String user = dataSourceProperties.determineUsername();
String password = dataSourceProperties.determinePassword();
String driverClassName = DatabaseDriver.fromJdbcUrl(url).getDriverClassName();
return DataSourceBuilder.create().type(SimpleDriverDataSource.class).url(url).username(user)
.password(password).driverClassName(driverClassName).build();
}