From c18ed644f41fbed0ed394b58f0d42f643ce75206 Mon Sep 17 00:00:00 2001 From: Dftre <3066417822@qq.com> Date: Sat, 11 Jan 2025 01:32:21 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96druid=E7=9B=91=E6=8E=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application-druid.yml | 46 +++++++------------ .../ruoyi/framework/config/DruidConfig.java | 28 +---------- .../config/DynamicDataSourceProperties.java | 20 ++------ .../datasource/DataSourceCreate.java | 2 - .../controller/MessageSystemController.java | 2 +- 5 files changed, 22 insertions(+), 76 deletions(-) diff --git a/ruoyi-admin/src/main/resources/application-druid.yml b/ruoyi-admin/src/main/resources/application-druid.yml index 740b4fc..3693023 100644 --- a/ruoyi-admin/src/main/resources/application-druid.yml +++ b/ruoyi-admin/src/main/resources/application-druid.yml @@ -15,8 +15,6 @@ spring: # url: jdbc:postgresql://127.0.0.1/ry # username: postgres # password: 123456 - # filters: stat,wall - # connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 # 从库数据源 # SLAVE: # url: jdbc:mysql://127.0.0.1/ruoyi?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 @@ -46,41 +44,31 @@ spring: testWhileIdle: true testOnBorrow: false testOnReturn: false - # 配置监控统计拦截的filters - filters: stat,wall + # 配置监控统计拦截的filters stat=>监控统计 wall=>防SQL注入 slf4j log4j2=>日志记录 + filters: stat,wall,slf4j,log4j2 # 通过connectProperties属性来打开mergeSql功能;慢SQL记录 connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 + + # 配置spring监控的匹配类 + aop-patterns: com.ruoyi.*.service.*,com.ruoyi.*.mapper.* + - webStatFilter: + # Web应用 和 URL监控 配置 + web-stat-filter: enabled: true url-pattern: /* exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*" - sessionStatEnable: true + session-stat-enable: false # 是否开启session统计功能 - statViewServlet: + # 监控视图配置 + stat-view-servlet: enabled: true - url-pattern: /druid/* - allow: 127.0.0.1 - deny: "" - reset-enable: false - login-username: ruoyi - login-password: 123456 - - filter: - stat: - enabled: true - # 慢SQL记录 - log-slow-sql: true - slow-sql-millis: 1000 - merge-sql: true - wall: - enabled: true - config: - multi-statement-allow: true - select-allow: true - stat-view-servlet: - enabled: true - + url-pattern: /druid/*+ + reset-enable: true # 是否可以重置日志 + login-username: ruoyi # 用户名 + login-password: 123456 # 密码 + allow: "" # IP白名单 (没有配置或者为空,则允许所有访问) + deny: "" # IP黑名单 (存在共同时,deny优先于allow) # 是否开启分布式事务,如不开启,请删除atomikos插件,否则atomikos相关驱动虽不生效但仍会启动 atomikos: diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/DruidConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/DruidConfig.java index 738394b..c30e72e 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/DruidConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/DruidConfig.java @@ -9,14 +9,11 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; 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 com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.spring.boot3.autoconfigure.properties.DruidStatProperties; -import com.alibaba.druid.support.jakarta.StatViewServlet; -import com.alibaba.druid.support.jakarta.WebStatFilter; import com.alibaba.druid.util.Utils; import jakarta.annotation.PreDestroy; @@ -47,7 +44,7 @@ public class DruidConfig { @SuppressWarnings({ "rawtypes", "unchecked" }) @Bean @ConditionalOnProperty(name = "spring.datasource.druid.statViewServlet.enabled", havingValue = "true") - public FilterRegistrationBean removeDruidFilterRegistrationBean(DruidStatProperties properties) { + FilterRegistrationBean removeDruidFilterRegistrationBean(DruidStatProperties properties) { // 获取web监控页面的参数 DruidStatProperties.StatViewServlet config = properties.getStatViewServlet(); // 提取common.js的配置路径 @@ -84,29 +81,6 @@ public class DruidConfig { return registrationBean; } - @Bean - @ConditionalOnProperty(name = "spring.datasource.druid.webStatFilter.enabled", havingValue = "true") - public FilterRegistrationBean webStatFilter() { - FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter()); - filterRegistrationBean.addUrlPatterns("/*"); - filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"); - filterRegistrationBean.addInitParameter("sessionStatEnable", "true"); - return filterRegistrationBean; - } - - @Bean - @ConditionalOnProperty(name = "spring.datasource.druid.statViewServlet.enabled", havingValue = "true") - public ServletRegistrationBean statViewServlet(DruidStatProperties properties) { - DruidStatProperties.StatViewServlet config = properties.getStatViewServlet(); - ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*"); - servletRegistrationBean.addInitParameter("loginUsername", config.getLoginUsername()); - servletRegistrationBean.addInitParameter("loginPassword", config.getLoginPassword()); - servletRegistrationBean.addInitParameter("allow", config.getAllow()); - servletRegistrationBean.addInitParameter("deny", config.getDeny()); - servletRegistrationBean.addInitParameter("resetEnable", String.valueOf(config.getResetEnable())); - return servletRegistrationBean; - } - public List getDruidDataSources() { return druidDataSources; } diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/DynamicDataSourceProperties.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/DynamicDataSourceProperties.java index 4d7edb9..9462ec3 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/DynamicDataSourceProperties.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/DynamicDataSourceProperties.java @@ -19,8 +19,6 @@ public class DynamicDataSourceProperties { private Map datasource; private String primary; - - public Properties build(DataSourceProperties dataSourceProperties) { Properties prop = new Properties(); DruidProperties druidProperties = SpringUtils.getBean(DruidProperties.class); @@ -39,10 +37,9 @@ public class DynamicDataSourceProperties { prop.setProperty("testWhileIdle", String.valueOf(druidProperties.isTestWhileIdle())); prop.setProperty("testOnBorrow", String.valueOf(druidProperties.isTestOnBorrow())); prop.setProperty("testOnReturn", String.valueOf(druidProperties.isTestOnReturn())); - // 添加过滤器配置 - prop.setProperty("filters", "stat,wall"); - prop.setProperty("connectionProperties", "druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000"); - prop.setProperty("proxyFilters", ""); // 确保不会覆盖默认的过滤器 + // 修改filters配置,确保spring在最前面 + prop.setProperty("filters", SpringUtils.getRequiredProperty("spring.datasource.druid.filters")); + prop.setProperty("connectionProperties", SpringUtils.getRequiredProperty("spring.datasource.druid.connectionProperties")); return prop; } @@ -84,17 +81,6 @@ public class DynamicDataSourceProperties { if (prop.getProperty("testOnReturn") != null) { dataSource.setTestOnReturn(Boolean.parseBoolean(prop.getProperty("testOnReturn"))); } - // 添加监控配置 - if (prop.getProperty("filters") != null) { - try { - dataSource.setFilters(prop.getProperty("filters")); - } catch (Exception e) { - e.printStackTrace(); - } - } - if (prop.getProperty("connectionProperties") != null) { - dataSource.setConnectionProperties(prop.getProperty("connectionProperties")); - } // 确保过滤器配置生效 try { if (prop.getProperty("filters") != null) { diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/datasource/DataSourceCreate.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/datasource/DataSourceCreate.java index 03d6c4f..6dc8686 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/datasource/DataSourceCreate.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/datasource/DataSourceCreate.java @@ -30,9 +30,7 @@ public class DataSourceCreate implements CreateDataSource { dataSource.setConnectProperties(prop); properties.setProperties(dataSource, prop); - // 确保监控和防火墙功能开启 try { - dataSource.setFilters("stat,wall"); dataSource.init(); } catch (Exception e) { throw new RuntimeException("初始化数据源失败", e); diff --git a/ruoyi-models/ruoyi-message/src/main/java/com/ruoyi/modelMessage/controller/MessageSystemController.java b/ruoyi-models/ruoyi-message/src/main/java/com/ruoyi/modelMessage/controller/MessageSystemController.java index 63f2819..22427c4 100644 --- a/ruoyi-models/ruoyi-message/src/main/java/com/ruoyi/modelMessage/controller/MessageSystemController.java +++ b/ruoyi-models/ruoyi-message/src/main/java/com/ruoyi/modelMessage/controller/MessageSystemController.java @@ -220,7 +220,7 @@ public class MessageSystemController extends BaseController */ @Operation(summary = "查询模版签名") @GetMapping("/selecTemplates") - public R selecTemplates() { + public R> selecTemplates() { List templates= messageSystemService.selecTemplates(); return R.ok(templates); }