Druid德鲁伊数据库连接池介绍以及详细配置(可无需使用web.xml)

1.介绍:

Druid(德鲁伊)是阿里巴巴开发的号称为监控而生的数据库连接池,Druid是目前最好的数据库连接池。在功能、性能、扩展性方面,都超过其他数据库连接池,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况。

2.可以做什么:

  • 可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。
  • 替换DBCP和C3P0。Druid提供了一个高效、功能强大、可扩展性好的数据库连接池。
  • 数据库密码加密。直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题。DruidDruiver和DruidDataSource都支持PasswordCallback。
  • SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog,你可以按需要选择相应的LogFilter,监控你应用的数据库访问情况。
  • 扩展JDBC,如果你要对JDBC层有编程的需求,可以通过Druid提供的Filter-Chain机制,很方便编写JDBC层的扩展插件。

3.地址:

  1. Druid官方地址:https://github.com/alibaba/druid
  2. jar包下载地址:http://repo1.maven.org/maven2/com/alibaba/druid/(虽然看起来很low但是的确是下载的地址……)
  3. 常见问题:https://github.com/alibaba/druid/wiki/FAQ

4.具体配置步骤:

      1.Druid 0.1.18 之后版本都发布到maven中央仓库中,所以你只需要在项目的pom.xml中加上dependency就可以了。1.1.9版本依赖如下:

<dependency>

    <groupId>com.alibaba</groupId>

    <artifactId>druid</artifactId>

    <version>1.1.9</version>

</dependency>

      2.编写配置文件,文件名:db_server.properties

      3.配置文件内容:

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/dbName?characterEncoding=utf-8
username=yourName
password=yourPassword
filters=stat,wall,log4j
initialSize=2
maxActive=300
maxWait=60000
timeBetweenEvictionRunsMillis=60000
minEvictableIdleTimeMillis=300000
validationQuery=SELECT 1
testWhileIdle=true
testOnBorrow=false
testOnReturn=false
poolPreparedStatements=true
maxPoolPreparedStatementPerConnectionSize=20
slowSqlMillis=10000

      配置文件的参数详情,可以通过此链接了解:https://blog.csdn.net/GouGe_CSDN/article/details/86599576

      也可以选择Maven仓库查找公共的仓库地址:http://www.mvnrepository.com/artifact/com.alibaba/druid

5.配置StatViewServlet配置:

      德鲁伊内置提供了一个StatViewServlet用于展示德鲁伊的统计信息。

      这个StatViewServlet的用途包括:

  • 提供监控信息展示的HTML页面
  • 提供监控信息的JSON API

      注意:使用StatViewServlet,建议使用druid 0.2.6以上版本。

5.1配置web.xml:

      StatViewServlet是一个标准的javax.servlet.http.HttpServlet,需要配置在你的Web应用中的WEB-INF / web.xml文件中。

 <servlet>
      <servlet-name>DruidStatView</servlet-name>
      <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
  </servlet>
  <servlet-mapping>
      <servlet-name>DruidStatView</servlet-name>
      <url-pattern>/druid/*</url-pattern>
  </servlet-mapping>

      根据配置中的URL模式来访问内置监控页面,如果是上面的配置,内置监控页面的首页是/druid/index.html

      例如:http://localhost:8080/druid/index.html

5.1.1配置监控页面访问密码:

      需要配置的Servlet的loginUsername状语从句:loginPassword这两个初始参数。

      具体可以参考:

https://blog.csdn.net/renfufei/article/details/39553639

      示例如下:

<!-- 配置 Druid 监控信息显示页面 -->  
<servlet>  
    <servlet-name>DruidStatView</servlet-name>  
    <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>  
    <init-param>  
	<!-- 允许清空统计数据 -->  
	<param-name>resetEnable</param-name>  
	<param-value>true</param-value>  
    </init-param>  
    <init-param>  
	<!-- 用户名 -->  
	<param-name>loginUsername</param-name>  
	<param-value>druid</param-value>  
    </init-param>  
    <init-param>  
	<!-- 密码 -->  
	<param-name>loginPassword</param-name>  
	<param-value>druid</param-value>  
    </init-param>  
</servlet>  
<servlet-mapping>  
    <servlet-name>DruidStatView</servlet-name>  
    <url-pattern>/druid/*</url-pattern>  
</servlet-mapping>  

6.Servlet 3.0的配置:

      Servlet 3.0 之后可以使用注解来配置 Servlet Filter Listener等Java Web组件

      Servlet 3.0的注解支持 在web.xml中是可以设置的 web.xml的顶层标签 < web-app > 有一个 metadata-complete 属性 设置为false时则启用注解和web插件支持

      true时则只初始化web.xml配置中的内容 , 默认当然是false 也就是启用注解和插件支持

6.1@WebInitParam注解:

      该注解通常不单独使用,而是配合 @WebServlet 或者 @WebFilter 使用。它的作用是为 Servlet 或者过滤器指定初始化参数,这等价于 web.xml 中 < servlet> 和 < filter> 的 < init-param> 子标签。

6.2@WebInitParam注解的常用属性:

属性名

类型

是否可选

描述

name

String

指定参数的名字,等价于 < param-name>。

value

String

指定参数的值,等价于 < param-value>。

description

String

关于参数的描述,等价于 < description>。

      这个标签是和@WebServlet 或者 @WebFilter 配合使用的,比如 使用阿里巴巴的Druid数据库连接池时
配置管理界面时,配置Druid的登

@WebServlet(urlPatterns = "/druid/*",
        initParams={
  @WebInitParam(name="allow",value=""),// IP白名单 (没有配置或者为空,则允许所有访问)
  @WebInitParam(name="loginUsername",value="admin"),// 用户名
  @WebInitParam(name="loginPassword",value="admin"),// 密码
  @WebInitParam(name="resetEnable",value="false")// 禁用HTML页面上的“Reset All”功能
  }) public class DruidStatViewServlet extends StatViewServlet { }

      配置管理界面时,配置Druid的登录和管理界面

      从上可知 @WebInitParam是编写在@WebServler注解的initParam标签之中的,Druid的资源过滤器

@WebFilter(filterName="druidWebStatFilter",urlPatterns="/*",
        initParams={
  @WebInitParam(name="exclusions",value="*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*")
  // 忽略资源
  }) public class DruidFilter extends WebStatFilter { }

同样 @WebInitParam也可以编写在@WebFilter注解的initParam标签之中的

 

  • 8
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 `druid-spring-boot-starter`,你需要在你的 Maven 项目中添加以下依赖: ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.10</version> </dependency> ``` 然后,你可以在你的 `application.properties` 或 `application.yml` 文件中配置 `druid` 数据源。以下是一个示例: ```yaml spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/db_name?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC username: root password: yourpassword type: com.alibaba.druid.pool.DruidDataSource # 下面是 druid 配置 # 初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时 initial-size: 5 # 最小连接池数量 min-idle: 5 # 最大连接池数量 max-active: 20 # 获取连接时最大等待时间,单位毫秒 max-wait: 60000 # 是否开启 PSCache pool-prepared-statements: true # 指定每个连接上 PSCache 的大小 max-pool-prepared-statement-per-connection-size: 20 # 打开removeAbandoned功能 remove-abandoned: true # 180秒,也就是3分钟 remove-abandoned-timeout: 180 # 关闭abanded连接时输出错误日志 log-abandoned: true # 监控配置 filter: # 开启监控统计功能 stat: enabled: true # 是否打印 SQL 语句 log-slow-sql: true # 慢 SQL 记录时间阈值,单位毫秒 slow-sql-millis: 5000 # 配置监控统计拦截的 URI,多个用逗号隔开 web-stat-filter: exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*" # 配置 Druid 的 StatViewServlet stat-view-servlet: url-pattern: /druid/* # IP 白名单 allow: 127.0.0.1 # IP 黑名单(共同存在时,deny优先于allow) deny: 192.168.0.1 # 登录用户名 login-username: admin # 登录密码 login-password: admin123 ``` 以上是一个基本的 `druid` 配置,你可以根据自己的实际需求进行调整。配置完成后,你就可以在代码中使用 `DataSource` 了,例如: ```java @Autowired DataSource dataSource; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值