依赖
//mysql 驱动 compile group: 'mysql', name: 'mysql-connector-java', version: '5.1.21' //druid compile group: 'com.alibaba', name: 'druid', version: '1.1.10'# 1. 新建druid配置信息类DruidConfiguration.java
package com.futao.springmvcdemo.foundation.configuration;import com.alibaba.druid.pool.DruidDataSource;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.context.annotation.Bean;import org.springframework.stereotype.Component;import javax.sql.DataSource;import java.sql.SQLException;@Component@ConfigurationProperties(prefix = "spring.datasource")public class DruidConfiguration {
private String url;
private String userName;
private String password;
private int initialSize;
private int minIdle;
private int maxActive;
private long maxWait;
private long timeBetweenEvictionRunsMillis;
private long minEvictableIdleTimeMillis;
private long maxEvictableIdleTimeMillis;
private boolean testWhileIdle;
private boolean testOnBorrow;
private boolean testOnReturn;
private boolean poolPreparedStatements;
private int maxOpenPreparedStatements;
private boolean asyncInit; @Bean
public DataSource druidDataSource() throws SQLException {
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setUrl(url);
druidDataSource.setUsername(userName);
druidDataSource.setPassword(password);
druidDataSource.setMaxActive(maxActive);
druidDataSource.setInitialSize(initialSize);
druidDataSource.setMaxWait(maxWait);
druidDataSource.setMinIdle(minIdle);
druidDataSource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
druidDataSource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
druidDataSource.setMaxEvictableIdleTimeMillis(maxEvictableIdleTimeMillis);
druidDataSource.setTestWhileIdle(testWhileIdle);
druidDataSource.setTestonBorrow(testOnBorrow);
druidDataSource.setTestonReturn(testOnReturn);
druidDataSource.setPoolPreparedStatements(poolPreparedStatements);
druidDataSource.setMaxOpenPreparedStatements(maxOpenPreparedStatements);
druidDataSource.setAsyncInit(asyncInit); return druidDataSource;
} public String getUrl() { return url;
} public void setUrl(String url) { this.url = url;
} public String getUserName() { return userName;
} public void setUserName(String userName) { this.userName = userName;
} public String getPassword() { return password;
} public void setPassword(String password) { this.password = password;
} public int getInitialSize() { return initialSize;
} public void setInitialSize(int initialSize) { this.initialSize = initialSize;
} public int getMinIdle() { return minIdle;
} public void setMinIdle(int minIdle) { this.minIdle = minIdle;
} public int getMaxActive() { return maxActive;
} public void setMaxActive(int 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 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 boolean isTestWhileIdle() { return testWhileIdle;
} public void setTestWhileIdle(boolean testWhileIdle) { this.testWhileIdle = testWhileIdle;
} public boolean isTestonBorrow() { return testOnBorrow;
} public void setTestonBorrow(boolean testOnBorrow) { this.testOnBorrow = testOnBorrow;
} public boolean isTestonReturn() { return testOnReturn;
} public void setTestonReturn(boolean testOnReturn) { this.testOnReturn = testOnReturn;
} public boolean isPoolPreparedStatements() { return poolPreparedStatements;
} public void setPoolPreparedStatements(boolean poolPreparedStatements) { this.poolPreparedStatements = poolPreparedStatements;
} public int getMaxOpenPreparedStatements() { return maxOpenPreparedStatements;
} public void setMaxOpenPreparedStatements(int maxOpenPreparedStatements) { this.maxOpenPreparedStatements = maxOpenPreparedStatements;
} public boolean isAsyncInit() { return asyncInit;
} public void setAsyncInit(boolean asyncInit) { this.asyncInit = asyncInit;
}
}# 2. 在application.yml中配置配置信息spring: # 数据源 datasource: url: jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=utf8 username: root password: 123456 driver-class-name: com.mysql.jdbc.Driver type: com.alibaba.druid.pool.DruidDataSource platform: mysql initialSize: 5 minIdle: 10 maxActive: 20 maxWait: 60000 timeBetweenEvictionRunsMillis: 2000 minEvictableIdleTimeMillis: 600000 maxEvictableIdleTimeMillis: 900000 testWhileIdle: true testOnBorrow: false testOnReturn: false poolPreparedStatements: true maxOpenPreparedStatements: 20 asyncInit: true filters: stat,wall,log4j logSlowSql: true# 3. 添加过滤器DruidFilter.java
druid除了数据连接池,还集成了对站点的URL进行统计的功能,利用filter忽略druid对某些资源的统计
package com.futao.springmvcdemo.controller;import com.alibaba.druid.support.http.WebStatFilter;import javax.servlet.annotation.WebFilter;import javax.servlet.annotation.WebInitParam;@WebFilter(filterName = "DruidFilter", urlPatterns = "@WebServlet(urlPatterns = "/druid@SpringBootApplication@ServletComponentScan@MapperScan("com.futao.springmvcdemo.dao")//@EnableAspectJAutoProxypublic class SpringmvcdemoApplication { public static void main(String[] args) {
SpringApplication.run(SpringmvcdemoApplication.class, args);
}
}# 截一波运行图
作者:FutaoSmile丶
链接:https://www.jianshu.com/p/0631755f9983



