1.引入druid依赖
代码如下:
1 <!--druid 依赖 --> 2 <dependency> 3 <groupId>com.alibaba</groupId> 4 <artifactId>druid</artifactId> 5 <version>1.0.18</version> 6 </dependency>
2.在application.yml配置文件中修改默认的数据源配置和连接池信息
代码如下:
1 spring: 2 datasource: 3 type: com.alibaba.druid.pool.DruidDataSource 4 driver-class-name: com.mysql.jdbc.Driver 5 url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF8?autoReconnect=true 6 username: root 7 password: root 8 initialSize: 3 9 maxActive: 50 10 minIdle: 3 11 #获取连接等待超时的时间 12 maxWait: 600000 13 #超过时间限制是否回收 14 removeAbandoned: true 15 #超过时间限制多长 16 removeAbandonedTimeout: 180 17 #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 18 timeBetweenEvictionRunsMillis: 600000 19 #配置一个连接在池中最小生存的时间,单位是毫秒 20 minEvictableIdleTimeMillis: 300000 21 #用来检测连接是否有效的sql,要求是一个查询语句 22 validationQuery: SELECT 1 FROM DUAL 23 #申请连接的时候检测 24 testWhileIdle: true 25 #申请连接时执行validationQuery检测连接是否有效,配置为true会降低性能 26 testOnBorrow: false 27 #归还连接时执行validationQuery检测连接是否有效,配置为true会降低性能 28 testOnReturn: false 29 #打开PSCache,并且指定每个连接上PSCache的大小 30 poolPreparedStatements: true 31 maxPoolPreparedStatementPerConnectionSize: 50 32 #属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有: 33 #监控统计用的filter:stat 日志用的filter:log4j 防御SQL注入的filter:wall 34 filters: stat
3.druid的其他属性配置
代码如下:
1 @Configuration 2 public class DruidConfig { 3 4 @ConfigurationProperties(prefix = "spring.datasource") 5 @Bean 6 public DataSource druid() { 7 return new DruidDataSource(); 8 } 9 }
4.使用druid的监控功能
1 import com.alibaba.druid.pool.DruidDataSource; 2 import com.alibaba.druid.support.http.StatViewServlet; 3 import com.alibaba.druid.support.http.WebStatFilter; 4 import org.springframework.boot.context.properties.ConfigurationProperties; 5 import org.springframework.boot.web.servlet.FilterRegistrationBean; 6 import org.springframework.boot.web.servlet.ServletRegistrationBean; 7 import org.springframework.context.annotation.Bean; 8 import org.springframework.context.annotation.Configuration; 9 import javax.sql.DataSource; 10 import java.util.Arrays; 11 import java.util.HashMap; 12 import java.util.Map; 13 14 @Configuration 15 public class DruidConfig { 16 17 @ConfigurationProperties(prefix = "spring.datasource") 18 @Bean 19 public DataSource druid() { 20 return new DruidDataSource(); 21 } 22 23 // 配置Druid的监控 24 //1、配置一个管理后台的Servlet 25 @Bean 26 public ServletRegistrationBean statViewServlet() { 27 ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*"); 28 Map<String, String> initParams = new HashMap<>(); 29 initParams.put("loginUsername", "admin"); 30 initParams.put("loginPassword", "123456"); 31 initParams.put("allow", "");// 默认就是允许所有访问 32 initParams.put("deny", "127.0.0.1"); 33 bean.setInitParameters(initParams); 34 return bean; 35 } 36 37 // 2、配置一个web监控的filter 38 @Bean 39 public FilterRegistrationBean webStatFilter() { 40 FilterRegistrationBean bean = new FilterRegistrationBean(); 41 bean.setFilter(new WebStatFilter()); 42 Map<String, String> initParams = new HashMap<>(); 43 initParams.put("exclusions", "*.js,*.css,/druid/*"); 44 bean.setInitParameters(initParams); 45 bean.setUrlPatterns(Arrays.asList("/*")); 46 return bean; 47 } 48 49 }