@PostConstruct public void initialize() { DataSource primaryDataSource = getPrimaryDataSource(); DataSourcePoolMetadataProvider provider = new DataSourcePoolMetadataProviders( this.providers); for (Map.Entry<String, DataSource> entry : this.applicationContext .getBeansOfType(DataSource.class).entrySet()) { String beanName = entry.getKey(); DataSource bean = entry.getValue(); String prefix = createPrefix(beanName, bean, bean.equals(primaryDataSource)); DataSourcePoolMetadata poolMetadata = provider .getDataSourcePoolMetadata(bean); if (poolMetadata != null) { this.metadataByPrefix.put(prefix, poolMetadata); } } }
public DataSourceMetricsHolder getMetrics(String dataSourceName) { return dataSourceMetrics.computeIfAbsent(dataSourceName, beanName -> { DataSource dataSource = applicationContext.getBean(beanName, DataSource.class); DataSourcePoolMetadataProviders providers = new DataSourcePoolMetadataProviders(metadataProviders); DataSourcePoolMetadata dataSourcePoolMetadata = providers.getDataSourcePoolMetadata(dataSource); DataSourceMetricsHolder dataSourceMetricsHolder = new DataSourceMetricsHolder(beanName, dataSourcePoolMetadata, registry); return dataSourceMetricsHolder; }); }
@Test public void testReturnDataSourcePoolMetadataProviderForHikari() { EnvironmentTestUtils.addEnvironment(context, "spring.datasource.type:" + HikariDataSource.class.getName()); context.register(DataSourceAutoConfiguration.class, DataSourceDecoratorAutoConfiguration.class, PropertyPlaceholderAutoConfiguration.class); context.refresh(); DataSource dataSource = context.getBean(DataSource.class); Assertions.assertThat(dataSource).isInstanceOf(DecoratedDataSource.class); DataSourcePoolMetadataProviders poolMetadataProvider = new DataSourcePoolMetadataProviders(context.getBeansOfType(DataSourcePoolMetadataProvider.class).values()); DataSourcePoolMetadata dataSourcePoolMetadata = poolMetadataProvider.getDataSourcePoolMetadata(dataSource); Assertions.assertThat(dataSourcePoolMetadata).isInstanceOf(HikariDataSourcePoolMetadata.class); }
@Test public void testReturnDataSourcePoolMetadataProviderForTomcat() { context.register(DataSourceAutoConfiguration.class, DataSourceDecoratorAutoConfiguration.class, PropertyPlaceholderAutoConfiguration.class); context.refresh(); DataSource dataSource = context.getBean(DataSource.class); Assertions.assertThat(dataSource).isInstanceOf(DecoratedDataSource.class); DataSourcePoolMetadataProviders poolMetadataProvider = new DataSourcePoolMetadataProviders(context.getBeansOfType(DataSourcePoolMetadataProvider.class).values()); DataSourcePoolMetadata dataSourcePoolMetadata = poolMetadataProvider.getDataSourcePoolMetadata(dataSource); Assertions.assertThat(dataSourcePoolMetadata).isInstanceOf(TomcatDataSourcePoolMetadata.class); }
@Test public void testReturnDataSourcePoolMetadataProviderForDbcp2() { EnvironmentTestUtils.addEnvironment(context, "spring.datasource.type:" + org.apache.commons.dbcp2.BasicDataSource.class.getName()); context.register(DataSourceAutoConfiguration.class, DataSourceDecoratorAutoConfiguration.class, PropertyPlaceholderAutoConfiguration.class); context.refresh(); DataSource dataSource = context.getBean(DataSource.class); Assertions.assertThat(dataSource).isInstanceOf(DecoratedDataSource.class); DataSourcePoolMetadataProviders poolMetadataProvider = new DataSourcePoolMetadataProviders(context.getBeansOfType(DataSourcePoolMetadataProvider.class).values()); DataSourcePoolMetadata dataSourcePoolMetadata = poolMetadataProvider.getDataSourcePoolMetadata(dataSource); Assertions.assertThat(dataSourcePoolMetadata).isInstanceOf(CommonsDbcp2DataSourcePoolMetadata.class); }
public DataSourceMetrics(DataSource dataSource, Collection<DataSourcePoolMetadataProvider> metadataProviders, String name, Iterable<Tag> tags) { this.name = name; this.tags = tags; this.dataSource = dataSource; DataSourcePoolMetadataProvider provider = new DataSourcePoolMetadataProviders(metadataProviders); this.poolMetadata = provider.getDataSourcePoolMetadata(dataSource); }
@Autowired public DataSourceMetrics( Map<String, DataSource> dataSources, Collection<DataSourcePoolMetadataProvider> providers) { this.dataSources = dataSources; this.provider = new DataSourcePoolMetadataProviders(providers); }
@Override public void afterPropertiesSet() throws Exception { this.poolMetadataProvider = new DataSourcePoolMetadataProviders( this.metadataProviders); }