AliDruid 配置方法

(1)在实际工作中,由于 HikariCP 和 Druid 应该各有千秋,会发现偏向于监控,有很多国内开发 者使用频次最高的 AliDruid,我们来看看看如何配置。

<!--druid--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.5</version></dependency>

(2)一样的思路,我们打开 DruidDataSourceAutoConfigure 配置类。

@Configuration
@ConditionalOnClass(com.alibaba.druid.pool.DruidDataSource.class)
@AutoConfigureBefore(DataSourceAutoConfiguration.class)
@EnableConfigurationProperties({DruidStatProperties.class, DataSourceProperties.class})
@Import({DruidSpringAopConfiguration.class,DruidStatViewServletConfiguration.class,DruidWebStatFilterConfiguration.class,DruidFilterConfiguration.class})
public class DruidDataSourceAutoConfigure {@Bean@ConditionalOnMissingBeanpublic DataSource dataSource() {return new DruidDataSourceWrapper();}/*** Register the {@link DataSourcePoolMetadataProvider} instances to support DataSource metrics.** @see DataSourcePoolMetadataProvidersConfiguration*/@Beanpublic DataSourcePoolMetadataProvider druidDataSourcePoolMetadataProvider() {return new DataSourcePoolMetadataProvider() {@Overridepublic DataSourcePoolMetadata getDataSourcePoolMetadata(DataSource dataSource) {if (dataSource instanceof DruidDataSource) {return new DruidDataSourcePoolMetadata((DruidDataSource) dataSource);}return null;}};}
}

我们发现 Druid 继承了 DataSourceProperties 的配置。

(3)我们打开 DruidDataSourceWrapper:

@ConfigurationProperties("spring.datasource.druid")
class DruidDataSourceWrapper extends DruidDataSource implements InitializingBean {@Autowiredprivate DataSourceProperties basicProperties;@Overridepublic void afterPropertiesSet() throws Exception {//if not found prefix 'spring.datasource.druid' jdbc properties ,'spring.datasource' prefix jdbc properties will be used.if (super.getUsername() == null) {super.setUsername(basicProperties.determineUsername());}if (super.getPassword() == null) {super.setPassword(basicProperties.determinePassword());}if (super.getUrl() == null) {super.setUrl(basicProperties.determineUrl());}if (super.getDriverClassName() == null) {super.setDriverClassName(basicProperties.determineDriverClassName());}}
......}

发现了 DataSource 的配置方法:

spring.datasource.druid.url=jdbc:mysql://127.0.0.1:3306/test # 或spring.datasource.url=
spring.datasource.druid.username=jack # 或spring.datasource.username=
spring.datasource.druid.password=jack123 # 或spring.datasource.password=
spring.datasource.druid.driver-class-name=com.mysql.jdbc.Driver #或 spring.datasource.driver-class-name=

(4)如果我们再打开 DruidDataSource 类,就会发现连接池的配置方法:

spring.datasource.druid.initial-size=
spring.datasource.druid.max-active=
spring.datasource.druid.min-idle=
spring.datasource.druid.max-wait=
spring.datasource.druid.pool-prepared-statements=
spring.datasource.druid.max-pool-prepared-statement-per-connection-size=
spring.datasource.druid.max-open-prepared-statements= #和上面的等价
spring.datasource.druid.validation-query=
spring.datasource.druid.validation-query-timeout=
spring.datasource.druid.test-on-borrow=
spring.datasource.druid.test-on-return=
spring.datasource.druid.test-while-idle=
spring.datasource.druid.time-between-eviction-runs-millis=
spring.datasource.druid.min-evictable-idle-time-millis=
spring.datasource.druid.max-evictable-idle-time-millis=
spring.datasource.druid.filters= #配置多个英文逗号分隔
....//more

如果再继续往上面看 DruidAbstractDataSource,会发现很多默认值。

(5)如果依次打开以下这些类,也会发现 Druid 的更多配置:

@Import({DruidSpringAopConfiguration.class,DruidStatViewServletConfiguration.class,DruidWebStatFilterConfiguration.class,DruidFilterConfiguration.class})

WebStatFilter 配置,说明请参考 Druid Wiki,配置 WebStatFilter:

spring.datasource.druid.web-stat-filter.enabled= #是否启用StatFilter默认值true
spring.datasource.druid.web-stat-filter.url-pattern=

StatViewServlet 配置,说明请参考 Druid Wiki,配置 StatViewServlet:

spring.datasource.druid.stat-view-servlet.enabled= #是否启用StatViewServlet默认值true
spring.datasource.druid.stat-view-servlet.login-username=
spring.datasource.druid.stat-view-servlet.login-password=

Druid的更多配置请参看官方文档吧,只是给大家举例如何一步一步的查看这些配置,而得到如何配置。

Spring Data JPA 从入门到精通~AliDruidDataSource的配置相关推荐

  1. Spring Data JPA 从入门到精通~@Version处理乐观锁的问题

    @Version 处理乐观锁的问题 @Version 乐观锁介绍 我们在研究 Auditing 的时候,发现了一个有趣的注解 @Version,源码如下: package org.springfram ...

  2. spring data jpa从入门到精通_Spring Data JPA的简单入门

    前言 spring data JPA是spring团队打造的sping生态全家桶的一部分,本身内核使用的是hibernate核心源码,用来作为了解java持久层框架基本构成的样本是再好不过的选择.最近 ...

  3. Spring Data JPA 从入门到精通~Naming命名策略详解及其实践

    Naming 命名策略详解及其实践 用 JPA 离不开 @Entity 实体,我都知道实体里面有字段映射,而字段映射的方法有两种: 显式命名:在映射配置时,设置的数据库表名.列名等,就是进行显式命名, ...

  4. Spring Data JPA 从入门到精通~默认数据源的讲解

    默认数据源 spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://1 ...

  5. Spring Data JPA 从入门到精通~Auditing及其事件详解

    Auditing 及其事件详解 Auditing 翻译过来是审计和审核,Spring 的优秀之处在于帮我们想到了很多繁琐事情的解决方案,我们在实际的业务系统中,针对一张表的操作大部分是需要记录谁什么时 ...

  6. Spring Data JPA 从入门到精通~实际工作的应用场景

    在实际工作中,有哪些场景会用到自定义 Repository 呢,这里列出几种实际在工作中的应用案例. 1. 逻辑删除场景 可以用到上面说的两种实现方式,如果有框架级别的全局自定义 Respositor ...

  7. Spring Data JPA 从入门到精通~自定义实现Repository

    EntityManager 的获取方式 我们既然要自定义,首先讲一下 EntityManager 的两种获取方式. 1. 通过 @PersistenceContext 注解. 通过将 @Persist ...

  8. Spring Data JPA 从入门到精通~EntityManager介绍

    EntityManager 介绍 我们前面已经无数次提到了,JPA 的默认 Repository 的实现类是 SimpleJpaRepository,而里面的具体实现就是调用的 EntityManag ...

  9. Spring Data JPA 从入门到精通~JpaSpecificationExecutor示例

    新建两个实体 @Entity(name = "UserInfoEntity") @Table(name = "user_info", schema = &quo ...

最新文章

  1. 终于放弃了Maven,我选择用Gradle!
  2. js中typeof用法详细介绍
  3. angularjs 1.3 综合学习 (one way bind , ng-if , ng-switch , ng-messages, ng-form ,ng-model )
  4. 比特币钱包(1) 钱包协议总览
  5. Android入门之基本布局
  6. .NET Core 项目指定SDK版本
  7. JavaScript从入门到放弃 - (一)构造函数和原型
  8. Visual Studio Code快速删除空行及几个常用快捷键总结
  9. 《趣学算法 [陈小玉]》学习笔记01
  10. R语言安装ccgarch_R语言基于ARMA-GARCH过程的VaR拟合和预测
  11. 使用SVN的导出功能,( 目的 : 使导出的文件目录中,不带有svn相关的文件 )
  12. Jmeter获取数据库数据
  13. 比较算盘和计算机的优点,UPD4526BC 二进制与十进制相比较的优点
  14. 微动探测原理及仪器介绍
  15. h.264视频编码器
  16. 动态桌面软件测试简历,动态壁纸软件横评
  17. 怎样设置默认打印机(HttpPrinter 易桥打印中间件)
  18. 三维GIS的困境与出路
  19. RANSAC的实现与应用
  20. 89. 格雷编码 Python

热门文章

  1. 深度学习在美团的应用
  2. 干货 | 机器学习算法在饿了么供需平衡系统中的应用
  3. python数据分析与机器学习(Numpy,Pandas,Matplotlib)
  4. Android消息队列图片记录
  5. logging模块(* * * * *)
  6. p1470 Longest Prefix
  7. [COCI2017-2018#1] Plahte
  8. 012.对netmap API的解读
  9. MemoryInjector 无痕注入
  10. 有原创保护能力的公众帐号可申请页面模版功能和图文消息正文插入历史群发链接...