druid-spring-boot-starter配置
时间: 2025-01-08 14:10:51 浏览: 5
### 如何配置 `druid-spring-boot-starter` 示例教程最佳实践
#### 一、引入依赖
为了使用 Druid 数据库连接池,在项目的 `pom.xml` 文件中加入如下 Maven 依赖:
```xml
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${最新版本号}</version>
</dependency>
```
此操作确保了项目能够利用到 Druid 提供的功能[^1]。
#### 二、基础配置项设置
编辑 `application.properties` 或者 `application.yml` 文件来完成基本参数设定。以下是 YAML 格式的例子:
```yaml
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8
username: root
password: 123456
# 初始化大小,最小,最大
initial-size: 5
min-idle: 5
max-active: 20
# 配置获取连接等待超时的时间
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 300000
validation-query: SELECT 'x'
test-while-idle: true
test-on-borrow: false
test-on-return: false
pool-prepared-statements: true
max-pool-prepared-statement-per-connection-size: 20
filters: stat,wall,log4j
connection-properties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
```
上述配置涵盖了数据库连接的核心属性以及性能优化建议,比如通过调整连接池的最大活动数 (`max-active`) 和初始化数量 (`initial-size`) 来适应应用的实际负载情况;启用 SQL 合并统计功能以便更好地监控慢查询等[^2]。
#### 三、高级特性集成
对于更复杂的场景,可以考虑开启更多高级选项,如 Web 控制台支持用于实时查看和分析 JDBC 性能指标。这通常涉及到额外的安全性和权限控制措施。
要激活该模块,需添加以下配置至应用程序文件内:
```properties
# 开启Druid内置监控页面访问路径,默认为/druid/*
spring.datasource.druid.web-stat-filter.enabled=true
# 设置允许访问的IP白名单(逗号分隔),留空表示不限制
spring.datasource.druid.web-stat-filter.allow=
# 禁止某些URL模式被过滤器处理
spring.datasource.druid.web-stat-filter.deny=/denyUrlPattern
```
此外,还可以自定义 AOP 切面拦截特定业务逻辑前后的行为,从而进一步增强系统的可观测性[^3]。
#### 四、测试验证
最后一步是编写单元测试案例以确认所有配置都按预期工作正常。可以通过 JUnit 结合 Spring TestContext Framework 实现自动化测试流程。
```java
@SpringBootTest(classes = Application.class)
public class DataSourceTest {
@Autowired
private DataSource dataSource;
@Test
public void contextLoads() throws SQLException {
assertNotNull(dataSource);
System.out.println("dataSource=" + dataSource);
Connection conn = null;
try {
conn = dataSource.getConnection();
System.out.println("conn=" + conn);
System.out.println("JDBC URL:" + conn.getMetaData().getURL());
System.out.println("Username:" + conn.getMetaData().getUserName());
} finally {
if (null != conn) {
conn.close();
}
}
}
}
```
这段代码片段展示了如何注入 `DataSource` 对象并通过它建立新的数据库连接实例来进行简单的连通性检测[^4]。
阅读全文