spring.datasource.druid.test-while-idle
时间: 2024-06-07 16:05:39 浏览: 295
`spring.datasource.druid.test-while-idle` 是 Druid 数据源的一个配置项,用于设置在空闲时是否进行连接的有效性检测。如果设置为 true,则表示在空闲时检测连接的有效性,如果连接失效,则从连接池中移除该连接。这样可以避免连接池中的连接长时间空闲而失效,提高连接池的使用效率。建议将该配置项设置为 true。
相关问题
tomcat项目运行一段时间报错[extShutdownHook] com.alibaba.druid.pool.DruidDataSource : {dataSource-1} closed
根据提供的引用内容,错误信息表明数据源已关闭。这可能是由于以下原因之一导致的:
1. 数据库连接池中的连接已经关闭,但是应用程序仍然在尝试使用它们。
2. 数据库连接池配置不正确,导致连接池无法正常工作。
为了解决这个问题,可以尝试以下步骤:
1. 检查应用程序中是否有未关闭的数据库连接。可以使用JDBC API手动关闭连接,或者使用Spring框架等ORM工具自动管理连接。
2. 检查数据库连接池的配置是否正确。可以尝试使用默认配置,或者根据官方文档调整配置参数。
以下是一些可能有用的代码片段和参考链接:
1. 手动关闭JDBC连接的示例代码:
```java
Connection conn = null;
try {
conn = DriverManager.getConnection(url, username, password);
// 执行SQL语句等操作
} catch (SQLException e) {
// 处理异常
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
// 处理异常
}
}
}
```
2. Spring Boot中使用Druid连接池的示例配置:
```properties
spring.datasource.url=jdbc:mysql://localhost:3306/house?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.druid.initial-size=5
spring.datasource.druid.max-active=20
spring.datasource.druid.min-idle=5
spring.datasource.druid.max-wait=60000
spring.datasource.druid.time-between-eviction-runs-millis=60000
spring.datasource.druid.min-evictable-idle-time-millis=300000
spring.datasource.druid.validation-query=SELECT 1 FROM DUAL
spring.datasource.druid.test-while-idle=true
spring.datasource.druid.test-on-borrow=false
spring.datasource.druid.test-on-return=false
spring.datasource.druid.pool-prepared-statements=true
spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20
spring.datasource.druid.filters=stat,wall,log4j
spring.datasource.druid.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
```
server: port: 8080 spring: datasource: username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/db?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8 druid: initial-size: 5 min-idle: 5 max-active: 20 max-wait: 60000 time-between-eviction-runs-millis: 60000 min-evictable-idle-time-millis: 100000 max-evictable-idle-time-millis: 300000 validation-query: SELECT 1 FROM DUAL test-while-idle: true test-on-borrow: false test-on-return: false pool-prepared-statements: true aop-patterns: com.example.demo.* stat-view-servlet: enabled: true login-username: root login-password: 123456 web-stat-filter: enabled: true url-pattern: /* exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*' filters: stat,wall filter: stat: slow-sql-millis: 1000 log-slow-sql: true enabled: true wall: enabled: true config: drop-table-allow: false重写yml格式
我可以帮你重新格式化这段YAML格式的文本,如下所示:
```yaml
server:
port: 8080
spring:
datasource:
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/db?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
druid:
initial-size: 5
min-idle: 5
max-active: 20
max-wait: 60000
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 100000
max-evictable-idle-time-millis: 300000
validation-query: SELECT 1 FROM DUAL
test-while-idle: true
test-on-borrow: false
test-on-return: false
pool-prepared-statements: true
aop-patterns: com.example.demo.*
stat-view-servlet:
enabled: true
login-username: root
login-password: 123456
web-stat-filter:
enabled: true
url-pattern: /*
exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'
filters: stat,wall
filter:
stat:
slow-sql-millis: 1000
log-slow-sql: true
enabled: true
wall:
enabled: true
config:
drop-table-allow: false
```
希望这样的格式更易读和明了。如果你还有任何其他问题,请随时提问!
阅读全文