如何在Spring启动应用程序中使用禁用连接池?

时间:2017-02-04 21:13:30

标签: spring spring-boot

我在Application.java中创建了这样的数据源:

@Bean
@ConfigurationProperties("datasource")
public DataSource dataSource() {
    return DataSourceBuilder.create().build();
}

但它返回一个带池的托管数据源。由于我正在使用的特定类型的数据库,我想禁用池。

最简单的方法是什么?

2 个答案:

答案 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();
}