grails-miniprofiler
grails-miniprofiler copied to clipboard
Add support for multiple data sources
Currently miniprofiler is enabled only for default data source. It will be great to add support for all data sources present in application.
After quick inspection of plugin source, I modified MiniprofilerGrailsPlugin.groovy and, in doWithSpring closure, replaced
BeanConfiguration dataSourceConfig = springConfig.getBeanConfig('dataSource')
if(dataSourceConfig) {
springConfig.addBeanConfiguration("dataSourceOriginal", dataSourceConfig)
dataSource(ProfilingDataSource, ref('dataSourceOriginal'), profilerProvider)
}
with
List<String> dataSourceBeanNames = springConfig.getBeanNames().findAll { it.startsWith("dataSource") && it.indexOf("Unproxied") == -1}
dataSourceBeanNames.each { String dataSourceBeanName ->
BeanConfiguration dataSourceConfiguration = springConfig.getBeanConfig(dataSourceBeanName)
if (dataSourceConfiguration) {
springConfig.addBeanConfiguration("${dataSourceBeanName}_Original", dataSourceConfiguration)
"${dataSourceBeanName}"(ProfilingDataSource, ref("${dataSourceBeanName}_Original"), profilerProvider)
}
}
With this change only, I was able to get sql profiling for all data sources available in app.
pull request added: https://github.com/tomdcc/grails-miniprofiler/pull/11