package cn.lili.mybatis.heath;
|
|
import org.springframework.beans.factory.ObjectProvider;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.boot.actuate.autoconfigure.jdbc.DataSourceHealthContributorAutoConfiguration;
|
import org.springframework.boot.actuate.health.AbstractHealthIndicator;
|
import org.springframework.boot.actuate.jdbc.DataSourceHealthIndicator;
|
import org.springframework.boot.jdbc.metadata.DataSourcePoolMetadataProvider;
|
import org.springframework.context.annotation.Configuration;
|
import org.springframework.util.StringUtils;
|
|
import javax.sql.DataSource;
|
import java.util.Map;
|
|
/**
|
* 数据库检验工具
|
*
|
* @author Chopper
|
* @version v4.0
|
* @since 2020/12/24 19:31
|
*/
|
|
@Configuration
|
public class DataSourceHealthConfig extends DataSourceHealthContributorAutoConfiguration {
|
|
@Value("${spring.datasource.dbcp2.validation-query:select 1}")
|
private String defaultQuery;
|
|
|
public DataSourceHealthConfig(Map<String, DataSource> dataSources, ObjectProvider<DataSourcePoolMetadataProvider> metadataProviders) {
|
super(dataSources, metadataProviders);
|
}
|
|
@Override
|
protected AbstractHealthIndicator createIndicator(DataSource source) {
|
DataSourceHealthIndicator indicator = (DataSourceHealthIndicator) super.createIndicator(source);
|
if (!StringUtils.hasText(indicator.getQuery())) {
|
indicator.setQuery(defaultQuery);
|
}
|
return indicator;
|
}
|
}
|