700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Spring Boot使用Druid和监控配置

Spring Boot使用Druid和监控配置

时间:2019-11-01 23:47:12

相关推荐

Spring Boot使用Druid和监控配置

完美与Spring Boot集成。

1、编写Spring BootDruid配置类

DruidDataSourceProperties.java

package org.paascloud.ops.config;import org.springframework.boot.context.properties.ConfigurationProperties;import java.util.Properties;/*** Created by meyer on /1/15.*/@ConfigurationProperties("spring.datasource.druid")public class DruidDataSourceProperties {private Boolean testWhileIdle = true;private Boolean testOnBorrow;private String validationQuery = "SELECT 1";private Boolean useGlobalDataSourceStat;private String filters;private Long timeBetweenLogStatsMillis;private Integer maxSize;private Boolean clearFiltersEnable;private Boolean resetStatEnable;private Integer notFullTimeoutRetryCount;private Integer maxWaitThreadCount;private Boolean failFast;private Boolean phyTimeoutMillis;private Long minEvictableIdleTimeMillis = 300000L;private Long maxEvictableIdleTimeMillis;private Integer initialSize = 5;private Integer minIdle = 5;private Integer maxActive = 20;private Long maxWait = 60000L;private Long timeBetweenEvictionRunsMillis = 60000L;private Boolean poolPreparedStatements = true;private Integer maxPoolPreparedStatementPerConnectionSize = 20;private Properties connectionProperties = new Properties() {{put("druid.stat.mergeSql", "true");put("druid.stat.slowSqlMillis", "5000");}};public Boolean getTestWhileIdle() {return testWhileIdle;}public void setTestWhileIdle(Boolean testWhileIdle) {this.testWhileIdle = testWhileIdle;}public Boolean getTestOnBorrow() {return testOnBorrow;}public void setTestOnBorrow(Boolean testOnBorrow) {this.testOnBorrow = testOnBorrow;}public String getValidationQuery() {return validationQuery;}public void setValidationQuery(String validationQuery) {this.validationQuery = validationQuery;}public Boolean getUseGlobalDataSourceStat() {return useGlobalDataSourceStat;}public void setUseGlobalDataSourceStat(Boolean useGlobalDataSourceStat) {this.useGlobalDataSourceStat = useGlobalDataSourceStat;}public String getFilters() {return filters;}public void setFilters(String filters) {this.filters = filters;}public Long getTimeBetweenLogStatsMillis() {return timeBetweenLogStatsMillis;}public void setTimeBetweenLogStatsMillis(Long timeBetweenLogStatsMillis) {this.timeBetweenLogStatsMillis = timeBetweenLogStatsMillis;}public Integer getMaxSize() {return maxSize;}public void setMaxSize(Integer maxSize) {this.maxSize = maxSize;}public Boolean getClearFiltersEnable() {return clearFiltersEnable;}public void setClearFiltersEnable(Boolean clearFiltersEnable) {this.clearFiltersEnable = clearFiltersEnable;}public Boolean getResetStatEnable() {return resetStatEnable;}public void setResetStatEnable(Boolean resetStatEnable) {this.resetStatEnable = resetStatEnable;}public Integer getNotFullTimeoutRetryCount() {return notFullTimeoutRetryCount;}public void setNotFullTimeoutRetryCount(Integer notFullTimeoutRetryCount) {this.notFullTimeoutRetryCount = notFullTimeoutRetryCount;}public Integer getMaxWaitThreadCount() {return maxWaitThreadCount;}public void setMaxWaitThreadCount(Integer maxWaitThreadCount) {this.maxWaitThreadCount = maxWaitThreadCount;}public Boolean getFailFast() {return failFast;}public void setFailFast(Boolean failFast) {this.failFast = failFast;}public Boolean getPhyTimeoutMillis() {return phyTimeoutMillis;}public void setPhyTimeoutMillis(Boolean phyTimeoutMillis) {this.phyTimeoutMillis = phyTimeoutMillis;}public Long getMinEvictableIdleTimeMillis() {return minEvictableIdleTimeMillis;}public void setMinEvictableIdleTimeMillis(Long minEvictableIdleTimeMillis) {this.minEvictableIdleTimeMillis = minEvictableIdleTimeMillis;}public Long getMaxEvictableIdleTimeMillis() {return maxEvictableIdleTimeMillis;}public void setMaxEvictableIdleTimeMillis(Long maxEvictableIdleTimeMillis) {this.maxEvictableIdleTimeMillis = maxEvictableIdleTimeMillis;}public Integer getInitialSize() {return initialSize;}public void setInitialSize(Integer initialSize) {this.initialSize = initialSize;}public Integer getMinIdle() {return minIdle;}public void setMinIdle(Integer minIdle) {this.minIdle = minIdle;}public Integer getMaxActive() {return maxActive;}public void setMaxActive(Integer maxActive) {this.maxActive = maxActive;}public Long getMaxWait() {return maxWait;}public void setMaxWait(Long maxWait) {this.maxWait = maxWait;}public Long getTimeBetweenEvictionRunsMillis() {return timeBetweenEvictionRunsMillis;}public void setTimeBetweenEvictionRunsMillis(Long timeBetweenEvictionRunsMillis) {this.timeBetweenEvictionRunsMillis = timeBetweenEvictionRunsMillis;}public Boolean getPoolPreparedStatements() {return poolPreparedStatements;}public void setPoolPreparedStatements(Boolean poolPreparedStatements) {this.poolPreparedStatements = poolPreparedStatements;}public Integer getMaxPoolPreparedStatementPerConnectionSize() {return maxPoolPreparedStatementPerConnectionSize;}public void setMaxPoolPreparedStatementPerConnectionSize(Integer maxPoolPreparedStatementPerConnectionSize) {this.maxPoolPreparedStatementPerConnectionSize = maxPoolPreparedStatementPerConnectionSize;}public Properties getConnectionProperties() {return connectionProperties;}public void setConnectionProperties(Properties connectionProperties) {this.connectionProperties = connectionProperties;}public Properties toProperties() {Properties properties = new Properties();notNullAdd(properties, "testWhileIdle", this.testWhileIdle);notNullAdd(properties, "testOnBorrow", this.testOnBorrow);notNullAdd(properties, "validationQuery", this.validationQuery);notNullAdd(properties, "useGlobalDataSourceStat", this.useGlobalDataSourceStat);notNullAdd(properties, "filters", this.filters);notNullAdd(properties, "timeBetweenLogStatsMillis", this.timeBetweenLogStatsMillis);notNullAdd(properties, "stat.sql.MaxSize", this.maxSize);notNullAdd(properties, "clearFiltersEnable", this.clearFiltersEnable);notNullAdd(properties, "resetStatEnable", this.resetStatEnable);notNullAdd(properties, "notFullTimeoutRetryCount", this.notFullTimeoutRetryCount);notNullAdd(properties, "maxWaitThreadCount", this.maxWaitThreadCount);notNullAdd(properties, "failFast", this.failFast);notNullAdd(properties, "phyTimeoutMillis", this.phyTimeoutMillis);notNullAdd(properties, "minEvictableIdleTimeMillis", this.minEvictableIdleTimeMillis);notNullAdd(properties, "maxEvictableIdleTimeMillis", this.maxEvictableIdleTimeMillis);notNullAdd(properties, "initialSize", this.initialSize);notNullAdd(properties, "minIdle", this.minIdle);notNullAdd(properties, "maxActive", this.maxActive);notNullAdd(properties, "maxWait", this.maxWait);notNullAdd(properties, "timeBetweenEvictionRunsMillis", this.timeBetweenEvictionRunsMillis);notNullAdd(properties, "poolPreparedStatements", this.poolPreparedStatements);notNullAdd(properties, "maxPoolPreparedStatementPerConnectionSize", this.maxPoolPreparedStatementPerConnectionSize);return properties;}private void notNullAdd(Properties properties, String key, Object value) {if (value != null) {properties.setProperty("druid." + key, value.toString());}}}

编写Spring Boot自动配置类:DruidDataSourceconfig.java

package org.paascloud.ops.config;import com.alibaba.druid.pool.DruidDataSource;import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;import org.springframework.boot.context.properties.EnableConfigurationProperties;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;/*** Created by meyer on /1/15.*/@Configuration@ConditionalOnClass({DruidDataSource.class})@ConditionalOnProperty(name = {"spring.datasource.type"},havingValue = "com.alibaba.druid.pool.DruidDataSource",matchIfMissing = true)@EnableConfigurationProperties(DruidDataSourceProperties.class)public class DruidDataSourceConfig {@Beanpublic DruidDataSource dataSource(DataSourceProperties dataSourceProperties, DruidDataSourceProperties druidDataSourceProperties) {DruidDataSource druidDataSource = (DruidDataSource) dataSourceProperties.initializeDataSourceBuilder().type(DruidDataSource.class).build();druidDataSource.configFromPropety(druidDataSourceProperties.toProperties());druidDataSource.setInitialSize(druidDataSourceProperties.getInitialSize());druidDataSource.setMinIdle(druidDataSourceProperties.getMinIdle());druidDataSource.setMaxActive(druidDataSourceProperties.getMaxActive());druidDataSource.setMaxWait(druidDataSourceProperties.getMaxWait());druidDataSource.setConnectProperties(druidDataSourceProperties.getConnectionProperties());return druidDataSource;}@Beanpublic ServletRegistrationBean druidStatViewServlet(DruidDataSourceProperties druidDataSourceProperties) {if (StringUtils.isEmpty(druidDataSourceProperties.getServletPath())) {druidDataSourceProperties.setServletPath("/druid/*");}return new ServletRegistrationBean(new StatViewServlet(), druidDataSourceProperties.getServletPath());}@Beanpublic FilterRegistrationBean druidWebStatFilter() {FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());//添加过滤规则.filterRegistrationBean.addUrlPatterns("/*");//添加不需要忽略的格式信息.filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid2/*");return filterRegistrationBean;}}

触发Druid配置:

spring.datasource.type=com.alibaba.druid.pool.DruidDataSourcespring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.datasource.url=jdbc:mysql://xxxxx:3306/xxxxxxspring.datasource.username=xxxxxxxxspring.datasource.password=xxxxxxxxxxxx

文章转载:Spring Cloud :/post/71.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。