使用Spring的AbstractRoutingDataSource进行数据源动态切换,在targetDataSource中添加了Db1,Db2,Db3三个DruidDataSource类型的数据源,且都已配置对应的Filters,但是在Druid监控画面中DataSourceStat List中只显示Db1的监控信息。
DataSource的Annotation位置放到接口方法上,没有放到实现类上,现在已经可以显示了。
原提问者GitHub用户yosaku01
使用AbstractRoutingDataSource进行数据源动态切换时,您在targetDataSource中添加了Db1、Db2、Db3三个DruidDataSource类型的数据源,并且都已配置对应的Filters。但是在Druid监控画面中,只显示了Db1的监控信息。这可能是因为您的@DataSource注解放在了接口方法上,而没有放在实现类上。
AbstractRoutingDataSource是一种动态数据源切换的技术,它可以根据数据源的标识符,动态地选择不同的数据源。在使用AbstractRoutingDataSource时,您需要实现determineCurrentLookupKey方法,以返回当前使用的数据源的标识符。同时,您还需要在targetDataSource中,配置所有可用的数据源。
在Spring中,如果您将@DataSource注解放在接口方法上,而不是放在实现类上,那么在运行时,Spring将无法确定要使用哪个数据源。因此,只有放在实现类上才能正确地选择数据源。
为了解决这个问题,您可以将@DataSource注解放在实现类上,而不是放在接口方法上。这样,Spring就可以正确地选择数据源,并在Druid监控画面中正确地显示监控信息。
您的问题可能是由于您在使用 Spring 的 AbstractRoutingDataSource 时,没有正确地配置数据源所导致的。具体来说,如果您在 AbstractRoutingDataSource 中添加了多个数据源,并且都已经配置了对应的 Filters,但是在 Druid 监控画面中只显示其中一个数据源的监控信息,那么可能是因为您没有将数据源的 Annotation 放到接口方法上,而是放到了实现类上。
多个数据源,可以参考其中的第6点
https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatFilter
原回答者GitHub用户wenshao
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。