使用c3p0连接数据库

database connection using c3p0

目前在我的项目中,数据库连接所需的数据源、事务管理器和其他 bean 在 xml 文件中定义,并且值在 属性 文件中配置,从中进行连接。 例如:

<bean id="DataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
    destroy-method="close" p:driverClass="${DRIVER_CLASS}" p:jdbcUrl="${DB_URL}"
    p:minPoolSize="${MIN_DB_POOL_SIZE}" p:maxPoolSize="${DB_POOL_SIZE}"
    p:maxStatements="${DB_POOL_SIZE}" p:idleConnectionTestPeriod="${IDLE_CONNECTION_TEST_PERIOD}"
    p:loginTeimeout="${LOGIN_TIMEOUT}" scope="singleton"></bean>

所有这些类似的值 ${DB_POOL_SIZE} 都在 属性 文件中配置。 class com.mchange.v2.c3p0.ComboPooledDataSource 是最终的 class 并且无法扩展。所以我的要求是 : 当 spring 创建数据源的 bean 时,我应该能够通过 setter 从我的 java 文件中设置 xml(DB_URL) 中的变量值方法。 怎么做?

我不太明白你想做什么,但如果你的问题是你想用一些自定义功能扩展 ComboPoolDataSource,只需扩展 AbstractComboPooledDataSource。查看 ComboPooledDataSource 的来源。那里没有太多东西(一旦你越过烦人的版权 header)。将其用作模板,然后根据需要扩展 AbstractComboPooledDataSource