Druid数据库连接

 

Druid是一个JDBC组件,它包括三部分: DruidDriver 代理Driver,能够提供基于Filter-Chain模式的插件体系。 DruidDataSource 高效可管理的数据库连接池。 SQLParser

常用配置

sring.datasource.name=druidDataSource
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.druid.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.druid.url=jdbc:mysql://localhost:3306/test
spring.datasource.druid.username=root
spring.datasource.druid.password=root
# 启动程序时,在连接池中初始化多少个连接
spring.datasource.druid.initial-size=5
# 连接池中最多支持多少个活动会话
spring.datasource.druid.maxActive=20
# 程序向连接池中请求连接时,超过maxWait的值后,认为本次请求失败,即连接池
# 没有可用连接,单位毫秒,设置-1时表示无限等待
spring.datasource.druid.maxWait=100
# 检查空闲连接的频率,单位毫秒, 非正整数时表示不进行检查
spring.datasource.druid.timeBetweenEvictionRunsMillis=60000
# 池中某个连接的空闲时长达到 N 毫秒后, 连接池在下次检查空闲连接时,将回收该连接,要小于防火墙超时设置
spring.datasource.druid.minEvictableIdleTimeMillis=300000
# 程序没有close连接且空闲时长超过 minEvictableIdleTimeMillis,则会执
# 行validationQuery指定的SQL,以保证该程序连接不会池kill掉,其范围不超
# 过minIdle指定的连接个数。
spring.datasource.druid.keep-alive=true
# 回收空闲连接时,将保证至少有minIdle个连接.
spring.datasource.druid.min-idle=5
# 检查池中的连接是否仍可用的 SQL 语句,drui会连接到数据库执行该SQL, 如果
# 正常返回,则表示连接可用,否则表示连接不可用
spring.datasource.druid.validationQuery=SELECT 1 FROM DUAL
# 当程序请求连接,池在分配连接时,是否先检查该连接是否有效。(高效)
spring.datasource.druid.testWhileIdle=true
# 程序 申请 连接时,进行连接有效性检查(低效,影响性能)
spring.datasource.druid.testOnBorrow=false
# 程序 返还 连接时,进行连接有效性检查(低效,影响性能)
spring.datasource.druid.testOnReturn=false
# 打开PSCache,缓存通过以下两个方法发起的SQL:
# public PreparedStatement prepareStatement(String sql)
# public PreparedStatement prepareStatement(String sql,
# int resultSetType, int resultSetConcurrency)
spring.datasource.druid.poolPreparedStatements=true
# 每个连接最多缓存多少个SQL
spring.datasource.druid.maxPoolPreparedStatementPerConnectionSize=20
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计
# 监控统计: stat
# 日志监控: log4j 或者 slf4j
# 防御SQL注入: wall
spring.datasource.druid.filters=stat,wall,log4j
# 连接属性。比如设置一些连接池统计方面的配置。通过connectProperties属性来打开mergeSql功能;慢SQL记录
spring.datasource.druid.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
# 合并多个DruidDataSource的监控数据
#spring.datasource.useGlobalDataSourceStat=true

数据源属性

@ConfigurationProperties(prefix = "spring.datasource.druid")
public class DruidDataSourceProperties {

	private String driverClassName;
	private String url;
	private String username;
	private String password;
    ...
    // get set方法...
}

数据源配置

@Configuration
@EnableConfigurationProperties({DruidDataSourceProperties.class})
public class DruidConfig {

    @Autowired
    private DruidDataSourceProperties properties;

    @Bean
    @ConditionalOnMissingBean
    public DataSource druidDataSource() {
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setDriverClassName(properties.getDriverClassName());
        druidDataSource.setUrl(properties.getUrl());
        druidDataSource.setUsername(properties.getUsername());
        druidDataSource.setPassword(properties.getPassword());
        // ...
        try {
            druidDataSource.setFilters(properties.getFilters());
            druidDataSource.init();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return druidDataSource;
    }

    /**
     * 注册Servlet信息, 配置监控视图
     *
     * @return
     */
    @Bean
    @ConditionalOnMissingBean
    public ServletRegistrationBean<Servlet> druidServlet() {
        ServletRegistrationBean<Servlet> servletRegistrationBean = new ServletRegistrationBean<Servlet>(new StatViewServlet(), "/druid/*");

        //白名单:
        servletRegistrationBean.addInitParameter("allow","127.0.0.1");
        // IP黑名单 (存在共同时,deny优先于allow):如果满足deny的话提示:Sorry, you are not permitted to view this page
        // servletRegistrationBean.addInitParameter("deny", "192.168.1.1");
        //登录查看信息的账号密码, 用于登录Druid监控后台
        servletRegistrationBean.addInitParameter("loginUsername", "admin");
        servletRegistrationBean.addInitParameter("loginPassword", "admin");
        //是否能够重置数据.
        servletRegistrationBean.addInitParameter("resetEnable", "true");
        return servletRegistrationBean;
    }

    /**
     * 注册Filter信息, 监控拦截器
     *
     * @return
     */
    @Bean
    @ConditionalOnMissingBean
    public FilterRegistrationBean<Filter> filterRegistrationBean() {
        FilterRegistrationBean<Filter> filterRegistrationBean = new FilterRegistrationBean<Filter>();
        filterRegistrationBean.setFilter(new WebStatFilter());
        filterRegistrationBean.addUrlPatterns("/*");
        filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
        return filterRegistrationBean;
    }
}

配置log4j.properties 在控制台打印 sql语句

log4j.logger.druid.sql.ResultSet=INFO
log4j.logger.druid.sql.Connection=DEBUG
log4j.logger.druid.sql.DataSource=DEBUG
log4j.logger.druid.sql.Statement=DEBUG
log4j.logger.druid.sql.PreparedStatement=DEBUG 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiha_zhu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值