Java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池。
Druid 是阿里巴巴开源平台上一个数据库连接池实现,结合了 C3P0、DBCP 等 DB 池的优点,同时加入了日志监控。
Druid 可以很好的监控 DB 池连接和 SQL 的执行情况,天生就是针对监控而生的 DB 连接池。
Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验。
Spring Boot 2.0 以上默认使用 Hikari 数据源,可以说 Hikari 与 Driud 都是当前 Java Web 上最优秀的数据源,我们来重点介绍 Spring Boot 如何集成 Druid 数据源,如何实现数据库监控。
二、配置Druidcom.alibaba druid1.1.21
package com.example.spingbootdruid.Config;
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 DruidConfig {
@ConfigurationProperties(prefix = "spring.datasource")
@Bean
public DataSource dataSource(){
return new DruidDataSource();
}
//配置 Druid 监控管理后台的Servlet;
//内置 Servlet 容器时没有web.xml文件,所以使用 Spring Boot 的注册 Servlet 方式
@Bean
public ServletRegistrationBean servletRegistrationBean(){
ServletRegistrationBean servletRegistrationBean=new ServletRegistrationBean(new StatViewServlet(), "/druid*.xml
四、编写测试案例
package com.example.spingbootdruid.Service.Impl;
import com.example.spingbootdruid.Mapper.DruidMapper;
import com.example.spingbootdruid.Model.userInfo;
import com.example.spingbootdruid.Service.DruidService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class DruidServiceImpl implements DruidService {
@Autowired
DruidMapper druidMapper;
@Override
public String insertInfo() {
userInfo userInfo=new userInfo();
userInfo.setUserName("Allen");
userInfo.setPassWord("Gz123456");
userInfo.setPhone("18502118184");
Integer integer = druidMapper.insertUserInfo(userInfo);
if(integer>0){
return "用户信息写入成功!";
}
else{
return "用户信息写入失败!";
}
}
}
五、查看浏览器结果



