Druid是阿里巴巴开源的一个强大的数据库连接池和监控组件。它提供了许多优秀的特性,包括性能强劲、监控功能丰富、扩展性好等,因此在实际项目中被广泛应用于数据库连接池的管理。
在Spring Boot中引入Druid可以通过以下步骤:
- 在pom.xml中添加Druid的依赖:
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.2.6</version> </dependency>
- 在Spring Boot的配置文件(application.properties或application.yml)中配置Druid的数据源相关属性,例如:
spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase spring.datasource.username=myusername spring.datasource.password=mypassword spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # Druid配置 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.initialSize=5 spring.datasource.minIdle=5 spring.datasource.maxActive=20 spring.datasource.maxWait=60000 spring.datasource.timeBetweenEvictionRunsMillis=60000 spring.datasource.minEvictableIdleTimeMillis=300000 spring.datasource.validationQuery=SELECT 1 spring.datasource.testWhileIdle=true spring.datasource.testOnBorrow=false spring.datasource.testOnReturn=false spring.datasource.poolPreparedStatements=true spring.datasource.maxPoolPreparedStatementPerConnectionSize=20 spring.datasource.filters=stat,wall,log4j spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
- 创建Druid的配置类,用于配置Druid的监控和管理功能:
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
@Configuration
public class DruidConfig {
@Bean
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource druidDataSource() {
return new DruidDataSource();
}
@Bean
public ServletRegistrationBean statViewServlet() {
// 创建一个ServletRegistrationBean对象,用于注册StatViewServlet,并映射到"/druid/*"路径
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
// 配置Druid监控页面的登录用户名和密码
servletRegistrationBean.addInitParameter("loginUsername", "admin");
servletRegistrationBean.addInitParameter("loginPassword", "123456");
return servletRegistrationBean;
}
@Bean
public FilterRegistrationBean webStatFilter() {
// 创建一个FilterRegistrationBean对象,用于注册WebStatFilter,并配置URL的过滤规则
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
// 添加URL的过滤规则,这里配置为拦截所有URL
filterRegistrationBean.addUrlPatterns("/*");
// 配置WebStatFilter的排除项,这些URL不会被拦截
filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
return filterRegistrationBean;
}
}
在这个配置类中,我们创建了一个名为 druidDataSource
的Bean,并且使用 @ConfigurationProperties
注解将配置文件中以 spring.datasource
开头的属性值与该Bean进行绑定。同时,我们还配置了Druid的监控页面和过滤器,使得可以通过浏览器访问Druid的监控页面,查看数据源的运行情况。
通过以上步骤,我们成功地引入了Druid并配置了数据源,同时也配置了Druid的监控和管理功能,使得我们可以更好地管理和监控数据库连接池的运行情况。
-
aop-patterns: com.atguigu.admin.*
:这个配置用于指定Druid的AOP切点,用于对Spring Bean进行监控。在这个例子中,com.atguigu.admin.*
表示对以com.atguigu.admin
开头的包中的Spring Bean进行监控。 -
filters: stat,wall,slf4j
:这个配置用于指定Druid的过滤器。在这个例子中,stat
表示开启监控统计功能,wall
表示开启防火墙功能,slf4j
表示使用SLF4J日志框架输出Druid的日志信息。
简单配置
- 在pom.xml中添加Druid的依赖:
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.2.6</version> </dependency>
2.
stat-view-servlet: # 监控页配置
enabled: true # 是否启用监控页
login-username: admin # 登录用户名
login-password: admin # 登录密码
resetEnable: false # 是否允许重置监控配置
web-stat-filter: # Web监控
enabled: true # 是否启用Web监控
urlPattern: /* # URL匹配模式
exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*' # 排除项,不进行Web监控的URL
filter:
stat: # SQL监控
slow-sql-millis: 1000 # SQL执行时间阈值,超过该阈值将被记录
logSlowSql: true # 是否记录慢SQL
enabled: true # 是否启用SQL监控
wall: # 防火墙
enabled: true # 是否启用防火墙
config:
drop-table-allow: false # 是否允许执行删除表的操作
解释:
stat-view-servlet
部分配置了Druid的监控页面相关参数。enabled
指定是否启用监控页面,login-username
和login-password
分别为登录用户名和密码,resetEnable
表示是否允许重置监控配置。web-stat-filter
部分配置了Web监控相关参数。enabled
指定是否启用Web监控,urlPattern
指定URL匹配模式,exclusions
指定不进行Web监控的URL。filter
部分配置了Druid的过滤器,包括SQL监控和防火墙。stat
部分配置了SQL监控的参数,包括slow-sql-millis
指定SQL执行时间阈值,logSlowSql
指定是否记录慢SQL,enabled
指定是否启用SQL监控。wall
部分配置了防火墙的参数,包括enabled
指定是否启用防火墙,config
中的drop-table-allow
指定是否允许执行删除表的操作。
-
stat-view-servlet:
enabled
: 指定是否启用Druid的监控页面,允许通过浏览器访问监控数据。login-username
和login-password
: 用于设置访问监控页面时的登录用户名和密码,用于保护监控页面不被未授权的访问所获取。resetEnable
: 指定是否允许重置监控配置,即允许动态修改监控配置。
-
web-stat-filter:
enabled
: 指定是否启用Druid的Web监控功能,用于监控Web请求的性能和SQL执行情况。urlPattern
: 指定需要进行Web监控的URL匹配模式。exclusions
: 指定不进行Web监控的URL,可以排除一些静态资源或特定URL,避免监控数据被干扰。
-
filter:
-
stat:用于配置Druid的SQL监控功能。
slow-sql-millis
: 指定SQL执行时间的阈值,超过该阈值的SQL将被记录下来。logSlowSql
: 指定是否记录慢SQL,用于分析和优化SQL性能。enabled
: 指定是否启用SQL监控功能。
-
wall:用于配置Druid的防火墙功能,用于防止SQL注入等安全问题。
enabled
: 指定是否启用防火墙功能。config
中的drop-table-allow
: 指定是否允许执行删除表的操作,可以增强数据库的安全性。
-
这些配置项可以帮助开发人员监控数据源的性能、SQL执行情况和Web请求情况,同时提供了一些安全防护措施,有助于优化系统性能和保障数据安全。
这样的配置方式更加直观和易于理解,可以方便地配置Druid的监控页面和过滤器功能。