maven:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.5</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
application.yml配置:
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql:///test?serverTimezone=CTT&useSSL=false&nullNamePatternMatchesAll=true
username: root
password: 123456
initialSize: 10
minIdle: 10
maxActive: 30
maxWait: 60000
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20
filters: stat
connectionProperties:
druid.stat.mergeSql: true
druid.stat.slowSqlMillis: 5000
DruidProperties.java:
@ConfigurationProperties("spring.datasource")
public class DruidProperties {
private String url;
private String username;
private String password;
private String driverClassName;
private int initialSize;
private int minIdle;
private int maxActive;
private int maxWait;
private int timeBetweenEvictionRunsMillis;
private int minEvictableIdleTimeMillis;
private String validationQuery;
private boolean testWhileIdle;
private boolean testOnBorrow;
private boolean testOnReturn;
private boolean poolPreparedStatements;
private int maxPoolPreparedStatementPerConnectionSize;
private String filters;
private Properties connectionProperties = new Properties();
// getter, setter 方法这边省略。。。
}
DruidConfig.java
@Configuration
public class DruidConfig {
@Autowired
private DruidProperties druidProp;
@Bean
JdbcTemplate jdbcTemplate(DataSource dataSource){
return new JdbcTemplate(dataSource);
}
@Bean
NamedParameterJdbcTemplate namedParameterJdbcTemplate (JdbcTemplate jdbcTemplate) {
return new NamedParameterJdbcTemplate(jdbcTemplate);
}
@Bean
@Primary
public DataSource druidDataSource() {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setUrl(druidProp.getUrl());
dataSource.setUsername(druidProp.getUsername());
dataSource.setPassword(druidProp.getPassword());
dataSource.setDriverClassName(druidProp.getDriverClassName());
dataSource.setInitialSize(druidProp.getInitialSize());
dataSource.setMinIdle(druidProp.getMinIdle());
dataSource.setMaxActive(druidProp.getMaxActive());
dataSource.setMaxWait(druidProp.getMaxWait());
dataSource.setTimeBetweenEvictionRunsMillis(druidProp.getTimeBetweenEvictionRunsMillis());
dataSource.setMinEvictableIdleTimeMillis(druidProp.getMinEvictableIdleTimeMillis());
dataSource.setValidationQuery(druidProp.getValidationQuery());
dataSource.setTestWhileIdle(druidProp.isTestWhileIdle());
dataSource.setTestOnBorrow(druidProp.isTestOnBorrow());
dataSource.setTestOnReturn(druidProp.isTestOnReturn());
dataSource.setPoolPreparedStatements(druidProp.isPoolPreparedStatements());
dataSource.setMaxPoolPreparedStatementPerConnectionSize(druidProp.getMaxPoolPreparedStatementPerConnectionSize());
try {
dataSource.setFilters(druidProp.getFilters());
} catch (SQLException e) {
System.err.println("druid configuration initialization filter: " + e);
}
dataSource.setConnectProperties(druidProp.getConnectionProperties());
return dataSource;
}
@Bean
public ServletRegistrationBean druidServlet() {
ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
servletRegistrationBean.addInitParameter("allow","0.0.0.0");
servletRegistrationBean.addInitParameter("loginUsername","admin");
servletRegistrationBean.addInitParameter("loginPassword","admin");
servletRegistrationBean.addInitParameter("resetEnable","false");
return servletRegistrationBean;
}
@Bean
public FilterRegistrationBean filterRegistrationBean() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setFilter(new WebStatFilter());
filterRegistrationBean.addUrlPatterns("/*");
filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
return filterRegistrationBean;
}
}
访问druid统计后台:
http://localhost:8080/druid/index.html