springboot整合druid
1、導入依存
2、appication.yml
3、DataSourceConfig
com.alibaba
druid-spring-boot-starter
${druid.version}
2、appication.yml
spring:
datasource:
#
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/tmall?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
username: root
password: ok
#
# 、 、 。 , ( *2+ ),
initialSize: 5 # 。 init , getConnection
minIdle: 5
maxActive: 20
# ( druid )
# , 。 maxWait , , , useUnfairLock true
maxWait: 60000
# , , 。 testWhileIdle
timeBetweenEvictionRunsMillis: 60000
# 。Destory minEvictableIdleTimeMillis,
minEvictableIdleTimeMillis: 300000
# sql
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true # true, , , timeBetweenEvictionRunsMillis, validationQuery
# ,
testOnBorrow: false # validationQuery ,
testOnReturn: false # validationQuery ,
# PSCache, PSCache
#druid PreparedStatementCache , sql , PreparedStatement ,
# PreparedStatementCache, oracle , , mysql, 。
# ,PSCache jvm, = *PSCache * PSCache
# preparedStatement, PSCache。#PSCache , oracle。 mysql5.5 PSCache , 。5.5 PSCache,
poolPreparedStatements: true
# Druid , Oracle PSCache , , 100
maxPoolPreparedStatementPerConnectionSize: 20
# , ,
# :
# filter:stat
# filter:log4j
# sql filter:wall
filters: stat,wall
useGlobalDataSourceStat: true
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
#
removeAbandoned : true
# ,
removeAbandonedTimeout : 180
# removeabandoned ,
logAbandoned: true
3、DataSourceConfig
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
@Configuration
public class DataSourceConfig {
/**
* druid , 。 java.sql.Datasource ,
* datasource 。 , Druid
*/
@Bean
@ConfigurationProperties("spring.datasource")
public DataSource dataSource() {
DruidDataSource dataSource = new DruidDataSource();
//
dataSource.setBreakAfterAcquireFailure(true);
//
dataSource.setConnectionErrorRetryAttempts(0);
return dataSource;
}
/**
* Druid , sql 。
* Druid
* Servlet
* http://localhost:8080/druid/login.html
*/
@Bean
public ServletRegistrationBean statViewServlet() {
ServletRegistrationBean registrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
Map initParams = new HashMap<>();
//
initParams.put("loginUsername","admin");
//
initParams.put("loginPassword","admin");
//
initParams.put("allow","");
//
//initParams.put("deny","127.0.0.1");
registrationBean.setInitParameters(initParams);
return registrationBean;
}
/**
* web filter
*/
@Bean
public FilterRegistrationBean webStatFilter(){
FilterRegistrationBean bean = new FilterRegistrationBean();
bean.setFilter(new WebStatFilter());
Map initParams = new HashMap<>();
initParams.put("exclusions","*.js,*.css,/druid/*");
bean.setInitParameters(initParams);
bean.setUrlPatterns(Arrays.asList("/*"));
return bean;
}
}