使用Spring Boot进行连接池配置

由於在使用Spring Boot進行數據庫連接池方面遇到了一些問題,很幸運地在Twitter上得到了《初次使用Spring Boot》這本書的官之助先生的幫助,所以我想留下這篇文章作為表示感謝的方式。

将池设定写入application.yml文件。

spring:
  datasource:
    url=jdbc:oracle:thin:@localhost:1521/orcl
    driverClassName=oracle.jdbc.driver.OracleDriver
    username: scott
    password:tiger
    maxActive: 15
    maxIdle: 10
    minIdle: 5
    initialSize: 0

我对此事原理很快就理解了,但是在Config类中生成数据源时,必须使用@ConfigurationProperties来扩展设置,否则无法生效!

@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSource dataSource() {
    DataSourceBuilder factory = DataSourceBuilder
            .create(this.properties.getClassLoader())
            .driverClassName(this.properties.getDriverClassName())
            .url(this.properties.getUrl())
            .username(this.properties.getUsername())
            .password(this.properties.getPassword());
    return factory.build();
}

为了避免出现”你别随意使用ConfigurationProperties!”的警告,我还会在pom.xml中添加配置。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

详细说明是在这里提供的。
stackoverflow – Spring-Boot:如何设置JDBC连接池属性,如最大连接数?
但是,DataSourceAutoConfiguration.CONFIGURATION_PREFIX的写法现在是否被支持,还不清楚,可能会引发错误。

我已经参考了ConfigurationProperties的写法。rororo1989的博客- Spring Boot其六,数据库相关内容呢!”prefix”的意思就是那样的啊。

追加说明:适用于SpringBoot1.4的情况。

只需在application.yml文件中进行相应的配置即可使其正常工作。

spring:
  datasource:
    driverClassName: oracle.jdbc.driver.OracleDriver
    url: jdbc:oracle:thin:@localhost:1521/orcl
    username: scott
    password: tiger
    sqlScriptEncoding: UTF-8
#pooling setting
spring.datasource.tomcat:
    maxActive: 15
    maxIdle: 10
    minIdle: 5
    initialSize: 2

非Tomcat用户请另行确认。
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-1.4-Release-Notes#datasource-binding

广告
将在 10 秒后关闭
bannerAds