使用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