网站主页和子页怎么做,网页设计与制作实训总结2000字,天津高端网站建设案例,企业网站功能需求文档文章目录 1 引言1.1 简介1.2 Druid的功能1.3 竞品对比 2 准备工作2.1 项目环境 3 集成Druid3.1 添加依赖3.2 配置Druid3.3 编写测试类测试3.4 访问控制台3.5 测试SQL监控3.6 数据库密码加密3.6.1 执行命令加密数据库密码3.6.2 配置参数3.6.3 测试 4 总结 1 引言
1.1 简介
Dru… 文章目录 1 引言1.1 简介1.2 Druid的功能1.3 竞品对比 2 准备工作2.1 项目环境 3 集成Druid3.1 添加依赖3.2 配置Druid3.3 编写测试类测试3.4 访问控制台3.5 测试SQL监控3.6 数据库密码加密3.6.1 执行命令加密数据库密码3.6.2 配置参数3.6.3 测试 4 总结 1 引言
1.1 简介
Druid连接池是阿里巴巴开源的数据库连接池项目。Druid连接池为监控而生内置强大的监控功能监控特性不影响性能。功能强大能防SQL注入内置Loging能诊断Hack应用行为。除了提供基本的数据源功能外还具备以下优势
性能优越Druid连接池的性能表现优于其他常见连接池如C3P0和DBCP。监控功能强大Druid内置了丰富的监控功能可以实时查看SQL执行情况、连接池状态等。稳定性高Druid在高并发环境下表现稳定能够有效避免连接泄漏等问题。扩展性好Druid支持多种数据库且配置灵活易于集成和扩展。
1.2 Druid的功能 高效的数据库连接池管理 高性能在并发环境下表现优越处理大量数据库连接请求。 稳定性在高并发和高负载情况下保持稳定避免连接泄漏。 易用性配置简单快速集成到Java应用中。 丰富的监控功能 连接池监控实时监控连接池状态如连接数、空闲连接数等。SQL监控记录SQL执行情况统计执行时间、次数等。URI监控监控各URI的访问情况统计请求次数和响应时间。防火墙功能防止SQL注入攻击提升系统安全性。 便捷的配置和扩展 多数据库支持支持MySQL、Oracle、PostgreSQL等多种数据库。 灵活配置提供丰富的配置选项灵活调整。 插件机制支持插件扩展功能如stat、wall、log4j等。 SQL执行日志和统计分析 SQL执行日志记录SQL执行时间、次数、影响行数等。 统计分析提供SQL执行统计分析帮助优化SQL性能。 慢SQL检测自动检测慢SQL提供详细执行信息便于调优。 提高系统安全性 SQL防火墙配置防火墙规则拦截非法SQL请求防止SQL注入。 黑白名单机制配置IP黑白名单限制特定IP访问权限。
1.3 竞品对比
功能类别功能DruidHikariCPDBCPTomcat-jdbcC3P0性能PSCache是否是是是LRU是否是是是SLB负载均衡支持是否否否否稳定性ExceptionSorter是否否否否扩展扩展FilterJdbcIntercepter监控监控方式jmx/log/httpjmx/metricsjmxjmxjmx支持SQL级监控是否否否否Spring/Web关联监控是否否否否诊断支持LogFilter否否否否连接泄露诊断logAbandoned否否否否安全SQL防注入是无无无无支持配置加密是否否否否
2 准备工作
2.1 项目环境
JDK版本JDK 17Spring Boot版本Spring Boot 3.2.2MySQL版本8.0.37构建工具Maven
3 集成Druid
3.1 添加依赖 这里的Druid版本必须要选择1.2.20及以上版本否则无法运行。 还有一点Druid的版本要与mysql-connector-java的版本相匹配可以去下面的网站看 Maven Repository: com.alibaba » druid » 1.2.20 (mvnrepository.com) dependencygroupIdcom.alibaba/groupIdartifactIddruid-spring-boot-3-starter/artifactIdversion1.2.20/version/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion8.0.32/version/dependency3.2 配置Druid 相关配置的详细信息可见DruidDataSource配置属性列表 · alibaba/druid Wiki (github.com) spring:application:name: serverprofiles:active: dev # 激活dev配置文件datasource:url: jdbc:mysql://${voyager.db.host}:3306/study_db?useUnicodetruecharacterEncodingUTF-8autoReconnecttrueserverTimezoneAsia/Shanghaidriver-class-name: com.mysql.cj.jdbc.Driverusername: rootpassword: ${voyager.db.pw}# druid 相关参数配置druid:# 初始化连接大小initial-size: 5# 最小连接池数量min-idle: 5# 最大连接池数量max-active: 20# 获取连接时最大等待时间单位毫秒max-wait: 60000# 配置间隔多久才进行一次检测检测需要关闭的空闲连接单位是毫秒time-between-eviction-runs-millis: 60000# 配置一个连接在池中最小生存的时间单位是毫秒min-evictable-idle-time-millis: 300000# 测试连接validation-query: SELECT 1 FROM DUAL# 配置监控统计用的filters,过滤掉静态文件web-stat-filter:# 启用Web统计过滤器enabled: true# 过滤匹配规则url-pattern: /*# 过滤忽略的格式exclusions: /druid/*,*.js,*.css,*.gif,*.jpg,*.bmp,*.png,*.ico# 配置可视化控制台页面stat-view-servlet:enabled: true# 访问Druid监控页面的地址首页默认是 /druid/index.htmlurl-pattern: /druid/*# 禁用重置按钮reset-enable: true# 登录用户名login-username: root# 登录密码login-password: 123456# 通过别名的方式配置扩展插件 常用的插件有监控统计用的filter:stat 日志用的filter:log4j 防御sql注入的filter:wall 防御sql注入的filter:wallfilter:stat:enabled: true# 是否开启慢sqllog-slow-sql: true# 是否开启SQL合并merge-sql: true# 慢sql的时间标准 单位:毫秒slow-sql-millis: 10003.3 编写测试类测试 注意不要使用lombok的RequiredArgsConstructor注解JUnit5好像无法自动装配详情来自 https://stackoverflow.com/questions/51867650/junit-5-no-parameterresolver-registered-for-parameter SpringBootTest
class SmartApplicationTest {Autowiredprivate DataSource dataSource ;Testvoid contextLoads() {System.out.println(dataSource.getClass());DruidDataSource druidDataSource (DruidDataSource) dataSource;System.out.println(druidDataSource.getUrl() druidDataSource.getUrl());System.out.println(druidDataSource.getUsername() druidDataSource.getUsername());System.out.println(druidDataSource.getInitialSize() druidDataSource.getInitialSize());System.out.println(druidDataSource.getMaxActive() druidDataSource.getMaxActive());}}运行测试 可以看到配置类的相关配置已经生效。
3.4 访问控制台
启动自己项目中的SpringBootApplication类后访问http://localhost:8084/druid/login.html改为自己服务的端口输入账号密码后即可进入 3.5 测试SQL监控 测试接口 RequestMapping(/user)
RestController
RequiredArgsConstructor
public class UserInfoController {private final UserInfoService userInfoService;GetMapping(/test)public ResultUserInfo login() {return Result.success(userInfoService.getById(1));}}进行测试 3.6 数据库密码加密
3.6.1 执行命令加密数据库密码 官方教程Wiki文档使用ConfigFilter · alibaba/druid Wiki (github.com) 在命令行中执行如下命令
java -cp D:\Develop\Maven\mvnRespo\com\alibaba\druid\1.2.20\druid-1.2.20.jar com.alibaba.druid.filter.config.ConfigTools your_password输出
privateKey:MIIBVgIBADANBgkqhkiG9w0BAQEFAASCAUAwggE8AgEAAkEA64avFnQKPO7bu5YnxWoOZjv3no4aFV558HTPDoXs6EGD0HP7RzzhGPOKmpLQ1BbA5viShtaDdaxXp6SvtMQIDAQABAkAeQt4fBo4SlCTrDUcMANLDtIlax/I87oqsONOg5M2JS0jNSbZuAXDv7/YEGEtMKuIESBZh7pvVG8FV531/fyOZAiEAPOkEQwVbUfGyeugR6IGvnt4yeOwkC3bUoATScsN98CIQDynBXC8YngDNwZ62QPXONpqCel6g8NO9VKCETaS87wIhAKRouxZL38PqfqV/WlZ5ZGd0YS9gA360IK8zbOmHEkO/AiEAsES3iuvzQNYXFL3x9Tm2GzT1fkSx9wx12BbJcVD7AECIQCD3Tv9SAgRhQoNcuaSDNluVrL/B/wOmJRLqaOVJLQGg
publicKey:MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAOvuGrxZ0Cj/ju27uWJ8VqDmY7956OGhVeefB0zw6F7OhBg9Bz0c84RjzipqS0NQWwOb4kobfmg3WsV6ekr7TECAwEAAQ
password:PNak4Yui02Ft6JSoKBsgNPlA033rdLhFwL0np1oHDRrCo9VkCuiiXviEMYwUgpHZUFxb2FpE0YmSguuRww3.6.2 配置参数
spring:datasource:url: jdbc:mysql://${voyager.db.host}:3306/study_db?useUnicodetruecharacterEncodingUTF-8autoReconnecttrueserverTimezoneAsia/Shanghaidriver-class-name: com.mysql.cj.jdbc.Driverusername: rootpassword: password # 修改为控制台输出的password#druid数据源配置druid:# Druid数据源的公钥public-key: publicKey # 修改为控制台输出的publicKeyfilter:# 启用Druid的过滤器配置config: enabled: trueconnect-properties:# 启用Druid的连接属性解密功能config.decrypt: trueconfig.decrypt.key: publicKey # 控制台输出的publicKey3.6.3 测试
启动启动类请求测试接口 4 总结
在这篇文章中我们详细介绍了如何在Spring Boot项目中集成Druid数据源并实现SQL监控和数据库密码加密等功能Druid还有许多有用的功能这里就不过多展示了希望本文对大家有所帮助。