druid 数据源的配置

参考文章:开源中国的博客里面写的一篇配置文档
http://my.oschina.net/u/1859292/blog/312188
http://my.oschina.net/hanzhankang/blog/95772
http://blog.youkuaiyun.com/pk490525/article/details/12621649

先写在这里,以后补充:

坐标:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.0.15</version>
</dependency>
<bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
        init-method="init" destroy-method="close">
        <property name="url" value="${jdbc_url}" />
        <property name="username" value="${jdbc_username}" />
        <property name="password" value="${jdbc_password}" />
        <!-- 初始化连接大小 -->
        <property name="initialSize" value="0" />
        <!-- 连接池最大使用连接数量 -->
        <property name="maxActive" value="20" />
        <!-- 连接池最小空闲 -->
        <property name="minIdle" value="0" />
        <!-- 获取连接最大等待时间 -->
        <property name="maxWait" value="60000" />
        <!-- <property name="poolPreparedStatements" value="true" /> <property 
            name="maxPoolPreparedStatementPerConnectionSize" value="33" /> -->
        <property name="validationQuery" value="${validationQuery}" />
        <property name="testOnBorrow" value="false" />
        <property name="testOnReturn" value="false" />
        <property name="testWhileIdle" value="true" />
        <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
        <property name="timeBetweenEvictionRunsMillis" value="60000" />
        <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
        <property name="minEvictableIdleTimeMillis" value="25200000" />
        <!-- 打开removeAbandoned功能 -->
        <property name="removeAbandoned" value="true" />
        <!-- 1800秒,也就是30分钟 -->
        <property name="removeAbandonedTimeout" value="1800" />
        <!-- 关闭abanded连接时输出错误日志 -->
        <property name="logAbandoned" value="true" />
        <!-- 监控数据库 -->
        <!-- <property name="filters" value="stat" /> -->
        <property name="filters" value="mergeStat" />
    </bean>
    <!-- 配置 druid 监控Spring jdbc -->
    <bean id="druid-stat-interceptor"
        class="com.alibaba.druid.support.spring.stat.DruidStatInterceptor">
    </bean>
    <bean id="druid-stat-pointcut" class="org.springframework.aop.support.JdkRegexpMethodPointcut"
        scope="prototype">
        <property name="patterns">
            <list>
                <value>com.liwei.service.*</value>
            </list>
        </property>
    </bean>
    <aop:config>
        <aop:advisor advice-ref="druid-stat-interceptor"
            pointcut-ref="druid-stat-pointcut" />
    </aop:config>
### 如何配置 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].
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值