Druid数据源的配置

Druid可以监控数据库访问性能,统计SQL的执行性能,提供了一个高效、功能强大、可扩展性好的数据库连接池。还提供数据库密码加密,直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题。DruidDruiverDruidDataSource都支持PasswordCallback

之前项目是用的DBCP的数据源,将DBCP改为Druid数据源是非常方便的,直接替换掉数据库bean即可,其他的配置都不需要变:

首先下载druid.jar包

<!-- 数据源 -->

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" 

init-method="init" destroy-method="close"> 

     <!-- 基本属性 url、user、password -->

    <property name="url" value="${url}" />

    <property name="username" value="${username}" />

    <property name="password" value="${password}" />

    <property name="connectionProperties" value="config.decrypt=true" />

    <!-- 配置初始化大小、最小、最大 -->

    <property name="initialSize" value="${initialSize}" />

    <property name="minIdle" value="${minIdle}" /> 

    <property name="maxActive" value="${maxActive}" />

    <!-- 配置获取连接等待超时的时间 -->

    <property name="maxWait" value="${maxWait}" />

    <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->

    <property name="timeBetweenEvictionRunsMillis" value="${timeBetweenEvictionRunsMillis}" />

    <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->

    <property name="minEvictableIdleTimeMillis" value="${minEvictableIdleTimeMillis}" />

  

    <property name="validationQuery" value="SELECT 'x'" />

    <property name="testWhileIdle" value="true" />

    <property name="testOnBorrow" value="false" />

    <property name="testOnReturn" value="false" />

 

    <!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->

    <property name="poolPreparedStatements" value="true" />

    <property name="maxPoolPreparedStatementPerConnectionSize" value="20" />

 

    <property name="removeAbandoned" value="true" /> <!-- 打开removeAbandoned功能 -->

    <property name="removeAbandonedTimeout" value="1800" /> <!-- 1800秒,也就是30分钟 -->

    <property name="logAbandoned" value="true" />

    <!-- 配置监控统计拦截的filters,去掉后监控界面sql无法统计 -->

    <property name="filters" value="stat,wall,config" /> 

</bean>

 

 

 

######数据源配置信息:

username=ipost

#加密后的密码 ConfigTools.encrypt("password")

password=XS7K+U+jglo3DhZbvcDCDibP1IpqegNvPirMiENfXpUB/kt/1gNCrajf1D5sWMUYzXdjPSCP8Vx+QkN0tmyehw==

driverClassName=oracle.jdbc.driver.OracleDriver

url=jdbc\:oracle\:thin\:@10.196.128.156\:1521\:orcl

initialSize=3

maxIdle=10

minIdle=3

maxActive=20

maxWait=60000

timeBetweenEvictionRunsMillis=180000

minEvictableIdleTimeMillis=300000

 

 

Web.xml中配置一个servlet,一个filter来对数据库进行监控:

<!-- 数据源监控 -->

<servlet>

<servlet-name>DruidStatView</servlet-name>

<servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>

        <load-on-startup>2</load-on-startup>

        <!-- 运行访问的IP -->

        <init-param>

         <param-name>allow</param-name> 

         <param-value>192.183.3.205</param-value>

        </init-param>

</servlet>

<servlet-mapping>

<servlet-name>DruidStatView</servlet-name>

<url-pattern>/dblistener/*</url-pattern>

</servlet-mapping>

 

<!-- 数据源监控过滤器 -->

<filter>

<filter-name>DruidWebStatFilter</filter-name>

<filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class>

<init-param>

<param-name>exclusions</param-name>

<param-value>*.js,*.gif,*.jpg,*.png,*.css,*.ico,/dblistener/*</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>DruidWebStatFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

 

启动后,通过

http://192.183.3.205:8080/ipost/dblistener/index.html 即可访问监控页面

### 如何配置 Druid 数据源 #### 基本概念 Druid 是一个高性能的数据库连接池,提供了强大的监控和管理功能。其配置可以极大地提升应用程序的数据处理能力和安全性。 #### 配置方法概述 在 Spring Boot 中集成 Druid 可以通过多种方式进行: - **纯 YML 方式**: 在 `application.yml` 文件中定义所有的连接属性。 - **Java Config 方式**: 使用 Java 类来声明 Bean 并注入必要的依赖项。 - **注解方式**: 利用特定于 Web 的 Servlet 和 Filter 注解以及扫描组件的支持[^2]。 #### YAML 配置示例 对于简单的单数据源应用来说,最简便的方法是在项目的 `application.yml` 或者 `application.properties` 文件里直接指定 Druid 连接池的相关设置: ```yaml spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: org.postgresql.Driver url: jdbc:postgresql://localhost:5432/mydb username: user password: pass druid: initial-size: 5 min-idle: 5 max-active: 20 test-on-borrow: true ``` 此段代码展示了如何利用YAML文件快速启动带有默认参数的一个PostgreSQL数据库实例,并启用了部分重要的特性如最小空闲连接数(`min-idle`)、最大活动连接数量(`max-active`)等[^1]。 #### Java Configuration 示例 如果需要更复杂的自定义化,则可以通过创建一个新的@Configuration类来进行编程式的Bean注册: ```java import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder; import javax.sql.DataSource; @Configuration public class DataSourceConfig { @Bean(name="primaryDataSource") public DataSource primaryDataSource(){ return DruidDataSourceBuilder.create() .build(); } } ``` 这段代码片段说明了怎样构建一个多数据源环境下的主要数据源bean对象。这里使用了阿里巴巴官方提供的工厂建造器模式简化了复杂度较高的场景下手动new出DataSource的过程[^3]。 #### 访问内置监控页面 完成上述任一形式的基础配置之后, 如果希望进一步增强系统的可观测性和诊断能力的话,还可以开启Druid自带的一套统计视图服务端点,默认情况下只需简单修改几行配置就能让这些额外的功能生效: ```properties # application.properties or equivalent yaml format spring.datasource.druid.web-stat-filter.enabled=true spring.datasource.druid.stat-view-servlet.url-pattern=/druid/* ``` 最后一步就是确保防火墙允许外部请求到达服务器上的相应路径(比如 `/druid/*`)以便开发者们可以在浏览器地址栏输入类似这样的URL:`http://yourserveraddress:port/druid/` 来查看实时的状态报告图表和其他有用信息[^5].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值