add > Spring Boot Actuator DataSource metrics support, detail see issue #1799 .

This commit is contained in:
lihengming
2017-07-17 14:03:13 +08:00
parent 59c56d1df3
commit cb7bf9a76b
2 changed files with 61 additions and 0 deletions
@@ -18,6 +18,9 @@ package com.alibaba.druid.spring.boot.autoconfigure;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.jdbc.metadata.DataSourcePoolMetadata;
import org.springframework.boot.autoconfigure.jdbc.metadata.DataSourcePoolMetadataProvider;
import org.springframework.boot.autoconfigure.jdbc.metadata.DataSourcePoolMetadataProvidersConfiguration;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -59,4 +62,21 @@ public class DruidDataSourceAutoConfigure {
return dataSource;
}
/**
* Register the {@link DataSourcePoolMetadataProvider} instances to support DataSource metrics.
* @see DataSourcePoolMetadataProvidersConfiguration
*/
@Bean
public DataSourcePoolMetadataProvider druidDataSourcePoolMetadataProvider() {
return new DataSourcePoolMetadataProvider() {
@Override
public DataSourcePoolMetadata getDataSourcePoolMetadata(DataSource dataSource) {
if (dataSource instanceof DruidDataSource) {
return new DruidDataSourcePoolMetadata((DruidDataSource)dataSource);
}
return null;
}
};
}
}
@@ -0,0 +1,41 @@
package com.alibaba.druid.spring.boot.autoconfigure;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.boot.autoconfigure.jdbc.metadata.AbstractDataSourcePoolMetadata;
import org.springframework.boot.autoconfigure.jdbc.metadata.DataSourcePoolMetadata;
/**
* {@link DataSourcePoolMetadata} for a Druid DataSource.
*
* @author lihengming [89921218@qq.com]
*/
public class DruidDataSourcePoolMetadata extends AbstractDataSourcePoolMetadata<DruidDataSource> {
/**
* Create an instance with the data source to use.
*
* @param dataSource the data source
*/
public DruidDataSourcePoolMetadata(DruidDataSource dataSource) {
super(dataSource);
}
@Override
public Integer getActive() {
return getDataSource().getActiveCount();
}
@Override
public Integer getMax() {
return getDataSource().getMaxActive();
}
@Override
public Integer getMin() {
return getDataSource().getMinIdle();
}
@Override
public String getValidationQuery() {
return getDataSource().getValidationQuery();
}
}