我希望能够利用 Spring Boot 数据源自动配置。但它并不支持我正在使用的所有功能,尤其是 logValidationErrors
。
spring:
datasource:
driverClassName: oracle.jdbc.OracleDriver
url: jdbc:jtds:sqlserver://111.11.11.11/DataBaseName
username: someuser
password: somepass
testOnBorrow: true
testWhileIdle: true
validationQuery: select /* validationQuery */ 1 from dual
minEvictableIdleTimeMillis: 1000
validationInterval: 30000
当前未使用这些:
logValidationErrors: true
maxAge: 1800000 # //30 Minute idle age
removeAbondoned: true
我可以获取创建的 DataSource bean 并手动设置这些值吗?或者有更好的方法来扩展或包装自动配置吗?
请参阅此处了解有关 logValidationErrors
等的更多信息:https://tomcat.apache.org/tomcat-8.0-doc/jdbc-pool.html
最佳答案
我用 BeanPostProcessor
解决了这个问题,类似于 Dave Syer 的建议:
@Override public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
if (bean instanceof DataSource) {
DataSource ds = (DataSource) bean;
ds.setLogValidationErrors(true);
ds.setRemoveAbandoned(true);
ds.setMaxAge(1800000);
}
return bean;
}
我也可能会提交 PR 来将属性添加到 Spring Boot 本身。
关于java - 如何扩展Spring Boot的DataSourceAutoConfiguration,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23256685/