Spring Boot 配置 Druid 数据源 - 详细指南
Spring Boot 配置 Druid 数据源 - 详细指南
Druid 是一个强大的数据库连接池,提供了丰富的功能,例如监控、统计、SQL 拦截等等。在 Spring Boot 项目中使用 Druid 数据源非常方便,只需要简单的配置即可。
1. 引入 Druid 依赖
在 pom.xml 文件中添加 Druid 的依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.6</version>
</dependency>
2. 配置数据源
在 application.properties 或 application.yml 中添加数据库连接信息:
# 数据库连接信息
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root
# 数据库连接池配置
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
# Druid 连接池配置
spring.datasource.druid.initial-size=5
spring.datasource.druid.min-idle=5
spring.datasource.druid.max-active=20
spring.datasource.druid.test-on-borrow=true
spring.datasource.druid.validation-query=SELECT 1 FROM DUAL
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.test-while-idle=true
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,logback
spring.datasource.druid.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
3. 配置 Druid 监控
可以配置 Druid 监控,以方便查看连接池的使用情况。
在 Spring Boot 的 Application 类中添加注解 @ServletComponentScan ,启用 Servlet 组件扫描。然后创建一个 DruidServlet 和 DruidStatViewServlet,用来访问监控页面和获取监控数据。
@SpringBootApplication
@ServletComponentScan
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Bean
public ServletRegistrationBean<Servlet> druidServletRegistrationBean() {
ServletRegistrationBean<Servlet> registrationBean = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*");
// IP 白名单
registrationBean.addInitParameter("allow", "127.0.0.1");
// IP 黑名单
registrationBean.addInitParameter("deny", "");
// 登录账号密码
registrationBean.addInitParameter("loginUsername", "admin");
registrationBean.addInitParameter("loginPassword", "admin");
return registrationBean;
}
@Bean
public FilterRegistrationBean<Filter> druidFilterRegistrationBean() {
FilterRegistrationBean<Filter> registrationBean = new FilterRegistrationBean<>(new WebStatFilter());
// 过滤规则
registrationBean.addUrlPatterns("/*");
// 忽略资源
registrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
return registrationBean;
}
}
4. 使用数据源
在需要使用数据源的类中添加 @Autowired 注解,注入 DataSource 对象,然后就可以使用了。
@Service
public class UserServiceImpl implements UserService {
@Autowired
private DataSource dataSource;
@Override
public void createUser(User user) {
try (
Connection connection = dataSource.getConnection();
PreparedStatement statement = connection.prepareStatement("INSERT INTO user(name, age) VALUES(?, ?)");
) {
statement.setString(1, user.getName());
statement.setInt(2, user.getAge());
statement.executeUpdate();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
注意:
- 以上示例仅供参考,实际配置可能需要根据具体情况进行调整。
DruidStatViewServlet的访问地址默认是/druid/*,可以通过配置registrationBean.addUrlPatterns()方法修改访问地址。WebStatFilter的过滤规则可以通过配置registrationBean.addUrlPatterns()和registrationBean.addInitParameter("exclusions", "*")方法进行调整。- 使用 Druid 监控时,需要在浏览器中访问
/druid/index.html页面。 - Druid 的官方文档中提供了更多详细的配置选项,可以参考官方文档:https://github.com/alibaba/druid
原文地址: https://www.cveoy.top/t/topic/lK8K 著作权归作者所有。请勿转载和采集!