9、Springboot整合Druid数据源

============================

============================
DRUID是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0DBCPPROXOOL等DB池的优点,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况,可以说是针对监控而生的DB连接池,据说是目前最好的连接池。

DRUID有一个可视化web界面,需要log4j支持
我们如何在整合Druid数据源的同时又使用这个web面板呢?

1.导入Druidlog4j的依赖

在pom.xml中导入以下两个依赖



    com.alibaba
    druid
    1.1.21



    log4j
    log4j
    1.2.17

2.在application.properties中整合数据源

在resources资源包下创建log4j.properties文件
进行配置

log4j.rootLogger=DEBUG, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

在application.properties中写入一句代码代表数据源选择Druid

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

再在application.properties写上使用log4j做filter的配置

#配置监控统计拦截的filters,stat:监控统计、log4j:日志记录、wall:防御sql注入
#如果允许时报错  java.lang.ClassNotFoundException: org.apache.log4j.Priority
spring.datasource.filters=stat,wall,log4j
spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
spring.datasource.useGlobalDataSourceStat=true
spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500

3.拓展控制器

创建config包,在config包下编写DruidConfig.java。

@Configuration
public class DruidConfig {
    @Bean
    @ConfigurationProperties(prefix = "spring.datasource")//和配置文件的datasource绑定
    public DataSource druidDataSource(){
        return new DruidDataSource();
    }
}

需要扩展,就在类上使用@Configuration接管,再用@Bean交给spring容器管理,最后再用@ConfigurationProperties和配置文件中的配置绑定

@Configuration
public class DruidConfig {
    @Bean
    @ConfigurationProperties(prefix = "spring.datasource")//和配置文件的datasource绑定
    public DataSource druidDataSource(){
        return new DruidDataSource();
    }

    //后台监控功能web.xml

    @Bean
    public ServletRegistrationBean statViewServlet(){
        ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");

        //后台需要有人配置账号密码
        Map initParams = new HashMap<>();
        initParams.put("loginUsername", "admin"); //后台管理界面的登录账号
        initParams.put("loginPassword", "123456"); //后台管理界面的登录密码

        //后台允许谁可以访问
        //initParams.put("allow", "localhost"):表示只有本机可以访问
        //initParams.put("allow", ""):为空或者为null时,表示允许所有访问
        initParams.put("allow", "");
        //deny:Druid 后台拒绝谁访问
        //initParams.put("xiaomakaiyuan", "192.168.1.00");表示禁止此ip访问

        //设置初始化参数
        bean.setInitParameters(initParams);
        return bean;
        //这些参数可以在 com.alibaba.druid.support.http.StatViewServlet 的父类 com.alibaba.druid.support.http.ResourceServlet 中找到
    }
}

new ServletRegistrationBean(new StatViewServlet(), “/druid/*”)即为配置了这个可视化web界面的路由为/druid
initParams.put(“loginUsername”, “admin”);后台管理界面的登录账号
initParams.put(“loginPassword”, “123456”);后台管理界面的登录密码 设置了这个可视化界面的管理员的账号密码
initParams.put(“allow”, “”);表示任何人都可以去访问登录

4.运行测试

启动springboot服务,去浏览器访问http://localhost:xxxx/druid/login.html
可以看见出现以下登录面板,说明我们已经配置成功了

1.png

输入之前设置好的账号密码admin 123456登入
可以看见这里有多重数据监控服务

1.png

然后我们可以随便编写一个调用到数据库的web接口,观察一下druid是否能监控到

1.png

再去看监控面板,看见已经监测到sql行为

1.png

说明我们的Druid整合完毕,web面板也部署完毕

关注我自建博客站
http://blog.petchk.cn/

关注我git博客https://chenhuakai.github.io/

你可能感兴趣的:(9、Springboot整合Druid数据源)