继续总结 Java 后台的工作2
前言
之前写过一个SSM中使用Druid
替换c3p0
数据源:/larger5/article/details/79509895
近来项目基本都是基于SpringBoot
的,同理,使用Druid
作为数据源,也是很简单的操作、原理
代码
做了一个简单 CRUD 来测试 sql,但是都不是重点,这里重点在于数据源的配置
1.DruidConfig.java
package com.cun.config;import java.util.Arrays;import java.util.HashMap;import java.util.Map;import javax.sql.DataSource;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 com.alibaba.druid.pool.DruidDataSource; //这个包容易导入错误import com.alibaba.druid.support.http.StatViewServlet; //这个包容易导入错误import com.alibaba.druid.support.http.WebStatFilter; //这个包容易导入错误@Configurationpublic class DruidConfig {@ConfigurationProperties(prefix = "spring.datasource")@Beanpublic DataSource druid() {return new DruidDataSource();}// 配置Druid的监控// 1、配置一个管理后台的Servlet@Beanpublic ServletRegistrationBean statViewServlet() {ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");Map<String, String> initParams = new HashMap<>();// 监控页面登录用户名 initParams.put("loginUsername", "admin");// 监控页面登录用户密码initParams.put("loginPassword", "123456");// ip白名单(没有配置或者为空,则允许所有访问)initParams.put("allow", "");// ip黑名单(如果某个ip同时存在,deny优先于allow)initParams.put("deny", "");bean.setInitParameters(initParams);return bean;}// 2、配置一个web监控的filter@Beanpublic FilterRegistrationBean webStatFilter() {FilterRegistrationBean bean = new FilterRegistrationBean();bean.setFilter(new WebStatFilter());Map<String, String> initParams = new HashMap<>();// 不拦截的静态资源initParams.put("exclusions", "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*");bean.setInitParameters(initParams);// 拦截所有的请求bean.setUrlPatterns(Arrays.asList("/*"));return bean;}}
2.SpringBoot 项目基本配置 application.yml
server:port: 80 #为了以后访问项目不用写端口号context-path: / #为了以后访问项目不用写项目名spring:datasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/testusername: rootpassword: 123type: com.alibaba.druid.pool.DruidDataSource #改变默认数据源 c3p0 为 Druidjpa: hibernate:ddl-auto: update #数据库同步代码show-sql: true#dao操作时,显示sql语句
4.Druid 基本配置 application.properties
# 初始化大小,最小,最大 spring.datasource.initialSize=5 spring.datasource.minIdle=5 spring.datasource.maxActive=20 # 配置获取连接等待超时的时间 spring.datasource.maxWait=60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 spring.datasource.timeBetweenEvictionRunsMillis=60000 # 配置一个连接在池中最小生存的时间,单位是毫秒 spring.datasource.minEvictableIdleTimeMillis=300000 # 校验SQL,Oracle配置 spring.datasource.validationQuery=SELECT 1 FROM DUAL,如果不配validationQuery项,则下面三项配置无用 spring.datasource.validationQuery=SELECT 'x' spring.datasource.testWhileIdle=true spring.datasource.testOnBorrow=false spring.datasource.testOnReturn=false # 打开PSCache,并且指定每个连接上PSCache的大小 spring.datasource.poolPreparedStatements=true spring.datasource.maxPoolPreparedStatementPerConnectionSize=20 # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙 spring.datasource.filters=stat,wall,log4j # 通过connectProperties属性来打开mergeSql功能;慢SQL记录 spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 # 合并多个DruidDataSource的监控数据 spring.datasource.useGlobalDataSourceStat=true
4. Druid 的 pom
<!-- /artifact/com.alibaba/druid-spring-boot-starter --><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.9</version></dependency>
效果
在浏览器上,输入类似如下的链接(注意 server 中 port、context-path 配置)
http://localhost/druid/sql.html
界面很明显,应该是使用BootStrap
做的~
其他
参考文章:
Druid的SQL监控没有数据
SpringBoot整合druid