【发布时间】:2017-11-22 06:32:56
【问题描述】:
考虑使用 spring-boot-starter-jdbc 的 Spring Boot,并且您希望拥有一个或多个数据源,它们的属性名称中确实有一个自定义前缀。根据我在org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration 中看到的内容,在我看来,自动配置只能与默认前缀spring.datasource 一起使用,但是一旦您对其进行修改,您将自行设置有关池的属性.
有人可以说明如何更优雅地配置 Tomcat JDBC 池数据源(阅读 Spring 惯用语)吗?
当前解决方法:
@Configuration
public class DatabaseConfiguration {
@Value("${datasource.api.tomcat.maxWait:5000}")
private int maxWaitMillis;
@Value("${datasource.api.tomcat.test-on-borrow:true}")
private boolean testOnBorrow;
@Value("${datasource.api.tomcat.validation-query:SELECT 1}")
private String validationQuery;
@Bean(name = "apiDataSource")
@ConfigurationProperties(prefix = "datasource.api")
public DataSource apiDataSource() {
DataSource ds = DataSourceBuilder.create().build();
// Assume we make use of Apache Tomcat connection pooling (default in Spring Boot)
org.apache.tomcat.jdbc.pool.DataSource tds = (org.apache.tomcat.jdbc.pool.DataSource) ds;
tds.setTestOnBorrow(testOnBorrow);
tds.setValidationQuery(validationQuery);
tds.setMaxWait(maxWaitMillis);
return ds;
}
}
【问题讨论】:
标签: java jdbc spring-boot connection-pooling spring-jdbc