SpringBoot~使用DruidDataSource实现日志监控

本文详细介绍了Druid数据库连接池在Java开发中的应用,包括SpringBoot集成、基本配置参数、性能优化(如并发处理和数据一致性)以及高可用性的设计。还涵盖了高并发秒杀场景下的关键点和实战项目源码链接。
摘要由CSDN通过智能技术生成

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

  • Druid 是阿里巴巴开源平台上一个数据库连接池实现,结合了 C3P0、DBCP 等 DB 池的优点,同时加入了日志监控。

  • Druid 可以很好的监控 DB 池连接和 SQL 的执行情况,天生就是针对监控而生的 DB 连接池。

  • Github地址:https://github.com/alibaba/druid/

  • com.alibaba.druid.pool.DruidDataSource 基本配置参数如下:

  • 在这里插入图片描述

实现步骤


  1. 导入添加上 Druid 数据源依赖。

com.alibaba

druid

1.1.21

  1. 通过 spring.datasource.type 指定数据源。

  2. 完整配置

spring:

datasource:

username: root

password: listen

#?serverTimezone=UTC解决时区的报错

url: jdbc:mysql://localhost:3306/java_11_15?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8

driver-class-name: com.mysql.cj.jdbc.Driver

type: com.alibaba.druid.pool.DruidDataSource

#Spring Boot 默认是不注入这些属性值的,需要自己绑定

#druid 数据源专有配置

initialSize: 5

minIdle: 5

maxActive: 20

maxWait: 60000

timeBetweenEvictionRunsMillis: 60000

minEvictableIdleTimeMillis: 300000

validationQuery: SELECT 1 FROM DUAL

testWhileIdle: true

testOnBorrow: false

testOnReturn: false

poolPreparedStatements: true

#配置监控统计拦截的filters,stat:监控统计、log4j:日志记录、wall:防御sql注入

#如果允许时报错 java.lang.ClassNotFoundException: org.apache.log4j.Priority

#则导入 log4j 依赖即可,Maven 地址:https://mvnrepository.com/artifact/log4j/log4j

filters: stat,wall,log4j

maxPoolPreparedStatementPerConnectionSize: 20

useGlobalDataSourceStat: true

connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500

mybatis:

type-aliases-package: com.mybatis.demo.pojo

mapper-locations: classpath:mapper/*.xml

  1. 导入log4j的依赖

log4j

log4j

1.2.17

  1. 因为SpringBoot没有DruidDataSource 的自动配置文件,需要自己为 DruidDataSource 绑定全局配置文件中的参数,再添加到容器中,而不再使用 Spring Boot 的自动生成了;我们需要 自己添加 DruidDataSource 组件到容器中,并绑定属性;

@Configuration

public class DruidConfiguration {

/*

将自定义的 Druid数据源添加到容器中,不再让 Spring Boot 自动创建

绑定全局配置文件中的 druid 数据源属性到 com.alibaba.druid.pool.DruidDataSource从而让它们生效

@ConfigurationProperties(prefix = “spring.datasource”):作用就是将 全局配置文件中

前缀为 spring.datasource的属性值注入到 com.alibaba.druid.pool.DruidDataSource 的同名参数中

*/

@ConfigurationProperties(prefix = “spring.datasource”)

@Bean

public DataSource druidDataSource() {

return new DruidDataSource();

}

}

  1. 测试是否连接正常

@SpringBootTest

class DemoApplicationTests {

@Autowired

DataSource dataSource;

@Test

public void test() throws SQLException {

//看一下默认数据源

System.out.println(dataSource.getClass());

//获得连接

Connection connection = dataSource.getConnection();

System.out.println(connection);

DruidDataSource druidDataSource = (DruidDataSource) dataSource;

System.out.println(“druidDataSource 数据源最大连接数:” + druidDataSource.getMaxActive());

System.out.println(“druidDataSource 数据源初始化连接数:” + druidDataSource.getInitialSize());

//关闭连接

connection.close();

}

总目录展示

该笔记共八个节点(由浅入深),分为三大模块。

高性能。 秒杀涉及大量的并发读和并发写,因此支持高并发访问这点非常关键。该笔记将从设计数据的动静分离方案、热点的发现与隔离、请求的削峰与分层过滤、服务端的极致优化这4个方面重点介绍。

一致性。 秒杀中商品减库存的实现方式同样关键。可想而知,有限数量的商品在同一时刻被很多倍的请求同时来减库存,减库存又分为“拍下减库存”“付款减库存”以及预扣等几种,在大并发更新的过程中都要保证数据的准确性,其难度可想而知。因此,将用一个节点来专门讲解如何设计秒杀减库存方案。

高可用。 虽然介绍了很多极致的优化思路,但现实中总难免出现一些我们考虑不到的情况,所以要保证系统的高可用和正确性,还要设计一个PlanB来兜底,以便在最坏情况发生时仍然能够从容应对。笔记的最后,将带你思考可以从哪些环节来设计兜底方案。


篇幅有限,无法一个模块一个模块详细的展示(这些要点都收集在了这份《高并发秒杀顶级教程》里),麻烦各位转发一下(可以帮助更多的人看到哟!)

由于内容太多,这里只截取部分的内容。
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!
模块详细的展示(这些要点都收集在了这份《高并发秒杀顶级教程》里),麻烦各位转发一下(可以帮助更多的人看到哟!)

[外链图片转存中…(img-56N8DuI3-1714666027065)]

[外链图片转存中…(img-PmNavDjy-1714666027065)]

由于内容太多,这里只截取部分的内容。
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

Spring Boot 3中整合DruidDataSource是一个常见的做法,它允许你更精细地管理和监控数据库连接。Druid提供了一个强大的数据库连接池,用于提高性能和资源管理。以下是集成的基本步骤: 1. 添加依赖:首先,你需要在你的构建工具的配置文件(如Maven的pom.xml或Gradle的build.gradle)中添加Druid的依赖。例如,在Maven中: ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.65</version> <!-- 更新为最新的版本 --> </dependency> ``` 2. 配置数据源:在Spring Boot的application.properties或application.yml文件中,配置DruidDataSource的属性,比如URL、用户名、密码、最大连接数等。示例: ```yaml spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.url=jdbc:mysql://localhost:3306/mydb?serverTimezone=UTC spring.datasource.username=myuser spring.datasource.password=mypassword # 其他Druid配置,如初始化大小、最大空闲连接数等 spring.datasource.initial-size=5 spring.datasource.max-active=20 ``` 3. 配置管理:Druid还提供了详细的统计信息和日志功能,可以在配置中开启,如访问统计、SQL日志等。 4. 注解扫描:为了能够注入和管理DruidDataSource,需要启用Spring的自动扫描功能,确保`@ConfigurationProperties(prefix = "spring.datasource")`注解的类被扫描到。 5. 部署启动:运行你的Spring Boot应用,DruidDataSource就会按照配置启动,并在Spring的Bean体系中注册为`DataSource`类型。 整合完成后,你可以通过@Autowired注解直接在需要的地方获取和使用数据源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值