Springboot 整合 Druid

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在监控、可扩展性、稳定性和性能方面都有明显的优势。 

监控

  • 监控SQL的执行时间、ResultSet持有时间、返回行数、更新行数、错误次数、错误堆栈信息。
  • QL执行的耗时区间分布。通过耗时区间分布,能够非常清楚知道SQL的执行耗时情况。
  • 监控连接池的物理连接创建和销毁次数、逻辑连接的申请和关闭次数、非空等待次数、PSCache命中率等。

第一步:

创建 springboot项目:IDE可以自行选择(如:idea、STS、eclipse(需要装插件))

目录结构如下图:

Springboot 整合 Druid_第1张图片

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

Springboot 整合 Druid_第2张图片

到目前就可以查看Druid的各种监控功能了,赶紧试试吧。

如有疑问或问题,请批评指正。

你可能感兴趣的:(SpringBoot,SpringBoot配置数据源,Druid配置)