springboot整合druid

springboot整合druid

druid是什么:

  • Druid 是阿里巴巴开源平台上一个数据库连接池实现,结合了 C3P0、DBCP 等 DB 池的优点,同时加入了日志监控。
  • Druid 可以很好的监控 DB 池连接和 SQL 的执行情况,天生就是针对监控而生的 DB 连接池。

druid参数

配置缺省值说明
name配置这个属性的意义在于没如果存在多个数据源,监控的时候可以通过名字来区分开来。如果没有配置,将会生成一个名字,格式是"DataSource-"+System.identityHashCode(this)
jdbcUrl连接数据库的url,不同数据库不一样
username连接数据库的用户名
password连接数据库的密码。如果你不希望密码直接写在配置文件中
driverClassName这一项可配可不配,如果不配置druid会根据url自动识别dbType,然后选择相应的driverClassName(建议配置下)
initialSize初始化时建立物理连接的个数,初始化发生在显示调用init方法,或者第一次getConnection时
maxActive最大连接池数量
maxIdle已经不再使用,配置了也没效果
minIdle最小连接池数量
maxWait获取连接时最大等待时间,单位毫秒,配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置useUnfairLock属性为true使用非公平锁
poolPreparedStatements是否缓存preparedStatement,也就是PsCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭
maxOpenPreparedStatements要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置打一下,比如说100
validationQuery用来检测连接是否有效的sql,要求是一个查询语句。如果validationQuery为null,testOnBorrow、testOnReturn 、testWhileIdle都不会起作用
testOnBorrow申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能
testOnReturn归还连接时执行它validationQuery检测连接是否有效,做了这个配置会降低性能
testWhileIdle建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunMills,执行validationQuery检测连接是否有效
timeBetweenEvictionRunMillis有两个含义:Destory线程会检测连接的间隔时间 testWhileIdle的判断依据,详细看testWhileIdele属性的说明
numTestsPerEvictionRun不再使用,一个DruidDataSource只支持一个EvicationRun
minEvictableIdleTimeMillis
connectionInitSqls物理连接初始化的时候执行sql
exceptionSorter当数据库抛出一些不可恢复的异常时,抛弃连接
filters属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有:监控统计用的filter:stat日志用的filter;log4j防御注入的filter:wall
proxyFilters类型是List<com.alibaba.druid,filter.Filter>,如果同时配置filter和proxyFilters,是组合关系,并非

使用:

//表示该类为配置类
@Configuration
public class DruidConfig {
    
    //创建datasource并将其作为一个组件装配到spring中
    @Bean
    //因为我们使用的是自定义的数据源,在对数据源进行配置时,需要.yaml文件里的全局属性
    @ConfigurationProperties(prefix = "spring.datasource")
    public DruidDataSource getDruidDataSource(){
        return new DruidDataSource();
    }

    
    //这个方法主要是注册servlet,因为在springboot中没有xml文件,所有的servlet请求均被dispatchservlet接管。
    @Bean
    public ServletRegistrationBean servletRegistrationBean(){
        //这里自定义一个注册servlet的组件
        ServletRegistrationBean<StatViewServlet> bean = new ServletRegistrationBean<>(new StatViewServlet(),"/druid/*");
     
        HashMap<String, String> initParams = new HashMap<>();
        //键名是经过规定的,不可自定义
        initParams.put("loginUsername","admin");
        initParams.put("loginPassword","123456");
        initParams.put("allow","");

        bean.setInitParameters(initParams);
        return bean;
    }
}

  • ServletRegistrationBean:servlet注册组件
  • StatViewServlet:

本笔记来源于对b站up狂神说Docker的记录,仅用个人学习使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值