SpringBoot学习笔记(二)配置druid
第一步:引入相关依赖,全部依赖都是上一篇springboot+mybatis依赖的基础上,再加上下边的依赖,如下:
1 2 3 4 5 6 | <!-- Druid数据库连接池组件 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version> 1.0 . 18 </version> </dependency> |
注意,由于druid的配置还需要一些注解,比如@WebInitParam
@WebFilter
等,它们在spring boot里来自于tomcat-embed-core包,而该包又来自于spring-boot-starter-web,所以,除了上边的依赖以外,一定要保证spring-boot-starter-web
的引入,我项目引入具体如下:
1 2 3 4 5 | <!-- Spring Boot Web 依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> |
第二步:再springboot项目的配置文件application.yml文件中加入如下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | spring: ##数据库连接信息 datasource: url: jdbc:mysql: //localhost:3306/young username: root password: root driver- class -name: com.mysql.jdbc.Driver ###################以下为druid增加的配置########################### type: com.alibaba.druid.pool.DruidDataSource # 下面为连接池的补充设置,应用到上面所有数据源中 # 初始化大小,最小,最大 initialSize: 5 minIdle: 5 maxActive: 20 # 配置获取连接等待超时的时间 maxWait: 60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 timeBetweenEvictionRunsMillis: 60000 # 配置一个连接在池中最小生存的时间,单位是毫秒 minEvictableIdleTimeMillis: 300000 validationQuery: SELECT 1 FROM DUAL testWhileIdle: true testOnBorrow: false testOnReturn: false # 打开PSCache,并且指定每个连接上PSCache的大小 poolPreparedStatements: true maxPoolPreparedStatementPerConnectionSize: 20 # 配置监控统计拦截的filters,去掉后监控界面sql无法统计, 'wall' 用于防火墙 filters: stat,wall,log4j # 通过connectProperties属性来打开mergeSql功能;慢SQL记录 connectionProperties: druid.stat.mergeSql= true ;druid.stat.slowSqlMillis= 5000 # 合并多个DruidDataSource的监控数据 useGlobalDataSourceStat: true ###############以上为配置druid添加的配置######################################## |
第三步:还需要添加三个配置类,如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | package com.young.config; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import com.alibaba.druid.pool.DruidDataSource; import javax.sql.DataSource; /** * 配置druid需要的配置类,引入application.properties文件中以spring.datasource开头的信息 * 因此需要在application.properties文件中配置相关信息。 * * @author young */ @Configuration public class DruidConfig { @Bean @ConfigurationProperties (prefix = "spring.datasource" ) public DataSource druidDataSource() { DruidDataSource druidDataSource = new DruidDataSource(); return druidDataSource; } } |
上图可以看出只是将DataSource对象的实现类变为了DruidDataSource对象
下图是过滤规则的配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | package com.young.config; import com.alibaba.druid.support.http.WebStatFilter; import javax.servlet.annotation.WebFilter; import javax.servlet.annotation.WebInitParam; /** * 配置druid过滤规则 * @author young * */ @WebFilter (filterName= "druidWebStatFilter" ,urlPatterns= "/*" , initParams={ @WebInitParam (name= "exclusions" ,value= "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*" ) // 忽略资源 }) public class DruidStatFilter extends WebStatFilter{ } |
以上三个类配置完之后,需要在启动类多添加一个注解,既@ServletComponentScan
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | package com.young; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.ServletComponentScan; @SpringBootApplication @ServletComponentScan //配置druid必须加的注解,如果不加,访问页面打不开,filter和servlet、listener之类的需要单独进行注册才能使用,spring boot里面提供了该注解起到注册作用 @MapperScan ( "com.young.mapper" ) //必须加这个,不加报错,如果不加,也可以在每个mapper上添加@Mapper注释 public class StartApplication { public static void main(String[] args) { SpringApplication.run(StartApplication. class , args); } } |
第四步:以上配置完成后,启动项目以后,可以访问druid页面了,比如我的项目端口号是8080,我的访问页面如下:(我没有配置项目名,springboot默认页面从“/”开始)
账号密码即为配置类中配置的admin
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律