Druid( 阿里巴巴开源项目 Druid)首先是一个数据库连接池,但它不仅仅是一个数据库连接池,它还包含一个ProxyDriver,一系列内置的JDBC组件库,一个SQL Parser。
Druid支持哪些数据库?
Druid支持所有JDBC兼容的数据库,包括Oracle、MySql、Derby、Postgresql、SQL Server、H2等等。
Druid针对Oracle和MySql做了特别优化,比如Oracle的PS Cache内存占用优化,MySql的ping检测优化。
Druid 的优势
Druid在监控、可扩展性、稳定性和性能方面都有明显的优势。
监控
第一步:
创建 springboot项目:IDE可以自行选择(如:idea、STS、eclipse(需要装插件))
目录结构如下图:
pom.xml
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-devtools
runtime
true
org.projectlombok
lombok
true
org.springframework.boot
spring-boot-starter-test
test
org.junit.vintage
junit-vintage-engine
log4j
log4j
1.2.17
ch.qos.logback
logback-core
1.2.3
junit
junit
4.12
org.springframework.boot
spring-boot-maven-plugin
创建controller包,创建TestController.java
@RestController //@RestController = @Controller + @ResponseBody
public class TestController {
@GetMapping("/") //以Get方式请求
public String index(){
return "Hello World!!";
}
}
运行SpbApplication.java中的Main方法
启动完毕,浏览器访问:http://localhost:8080/
看到Hello World!!说明springboot项目正常,没有问题。
第二步:
pom.xml文件假如Druid的依赖
mysql
mysql-connector-java
runtime
com.alibaba
druid
1.1.10
application.yml文件对数据源的设置
#数据源配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource #指定要使用的数据源类型
driver-class-name: com.mysql.cj.jdbc.Driver #数据库驱动
url: jdbc:mysql://localhost:3306/spb?useUnicode=true&characterEncoding=utf-8 #数据库连接url
username: root #数据库用户名
password: root #数据库密码
将数据源配置到容器中、设置Druid的监控功能以及过滤功能:
@Configuration //@Configuration注解的作用:表示该类为配置类
public class DruidConfig {
/**
* 将自定义的Druid数据源添加到容器中,不再让SpringBoot自动创建
* 绑定全局配置文件中的Druid数据源属性到com.alibaba.druid.pool.DruidDataSource从而让它们生效
* @ConfigurationProperties(prefix = "spring.datasource"):作用就是将 全局配置文件中
* 前缀为 spring.datasource的属性值注入到 com.alibaba.druid.pool.DruidDataSource 的同名参数中
*/
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSource druidDataSource(){
return new DruidDataSource();
}
/**
* 配置 Druid 监控管理后台的Servlet;
* 内置 Servlet 容器时没有web.xml文件,所以使用 Spring Boot 的注册 Servlet 方式
* 访问路径 : http://ip(localhost/127.0.0.1):port/druid/index.html; 例如: http://localhost/druid/index.html
*/
@Bean
public ServletRegistrationBean statViewServlet(){
ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
// 这些参数可以在 com.alibaba.druid.support.http.StatViewServlet
// 的父类 com.alibaba.druid.support.http.ResourceServlet 中找到
Map initParams = new HashMap<>();
initParams.put("loginUsername", "admin"); //后台管理界面的登录账号
initParams.put("loginPassword", "123456"); //后台管理界面的登录密码
//后台允许访问设置
//initParams.put("allow", "localhost"):表示只有本机可以访问
initParams.put("allow", "");//为空或者为null时,表示允许所有访问
//设置初始化参数
bean.setInitParameters(initParams);
return bean;
}
//配置 Druid 监控 之 web 监控的 filter
//WebStatFilter:用于配置Web和Druid数据源之间的管理关联监控统计
@Bean
public FilterRegistrationBean webStatFilter() {
FilterRegistrationBean bean = new FilterRegistrationBean();
bean.setFilter(new WebStatFilter());
//exclusions:设置哪些请求进行过滤排除掉,从而不进行统计
Map initParams = new HashMap<>();
initParams.put("exclusions", "*.js,*.css,/druid/*,/jdbc/*");
bean.setInitParameters(initParams);
//"/*" 表示过滤所有请求
bean.setUrlPatterns(Arrays.asList("/*"));
return bean;
}
}
启动spring应用访问:http://localhost:8080/druid/index.html
到目前就可以查看Druid的各种监控功能了,赶紧试试吧。
如有疑问或问题,请批评指正。