想做一个需求,
显示活动链接正在运行的sql,如果正在运行一个sql很慢的话,就可以直接在活动连接那里看到。
现在的想法是对StatFilter做子类,复写几个方法,需要用到StatFilter.buildSlowParameters方法,这个方法是private的,是否可以将他变为protected,这样就不需要整个方法拷贝出来了。
另外,internalAfterStatementExecute方法中的 if (logSlowSql) { LOG.error("slow sql " + millis + " millis. "。。。 } if里面那一行,是否可以做成一个protected函数,这样在有需要的时候也可以复写
原提问者GitHub用户sunchey11
如果您想要扩展StatFilter以满足特定需求,建议不直接修改StatFilter中的私有方法。这样做可能会破坏StatFilter的封装性和稳定性,并且不是一种良好的编程实践。
相反,建议采用以下方法来实现您的需求:
1. 使用Druid提供的配置项:Druid提供了许多配置选项,可以通过设置这些选项来满足您的需求。例如,您可以设置druid.stat.logSlowSql
为true
,来记录慢查询日志。您可以查阅Druid的官方文档或源代码中的配置项列表,找到适合您需求的配置选项。
2. 使用Druid提供的监听器功能:Druid提供了一系列的监听器接口,通过实现这些接口并注册相应的监听器,可以在执行SQL语句的不同阶段进行自定义操作。您可以实现StatListener
接口,在afterStatementExecute
方法中处理慢查询的情况,并根据需要输出日志或进行其他操作。详细的使用方法请参考Druid的官方文档。
通过以上方法,您无需修改StatFilter的私有方法,而是利用Druid提供的扩展机制实现您的需求。这样可以保持代码的可维护性和兼容性。如果您仍然遇到问题,建议您查阅Druid的官方文档、GitHub仓库或寻求相关技术支持以获取更多帮助。
如果您想要对StatFilter进行子类化并复写其方法以实现特定的需求,建议不要直接修改StatFilter中的私有方法,因为这可能会破坏StatFilter的封装性和稳定性。虽然可以通过反射等方式来访问和修改私有方法,但这并不是一个良好的编程实践,容易引发不可预见的问题。
相反,建议通过其他方式实现需求,例如使用Druid提供的配置和监听器功能
问题已修复,请用新版本 https://github.com/alibaba/druid/releases/tag/1.1.14
原回答者GitHub用户wenshao
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。