我有一个使用 Spring 设置连接池数据源的 web 应用程序,如下所示:
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="${jdbc.driverClassName}" />
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="user" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
该应用程序还使用 logback 将事件直接记录到数据库。Logback 在带有 DBAppender 的 logback.xml 文件中配置:
<appender name="eventsDB" class="ch.qos.logback.classic.db.DBAppender">
<connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource">
<dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource">
<driverClass>${jdbc.driverClassName}</driverClass>
<jdbcUrl>${jdbc.url}</jdbcUrl>
<user>${jdbc.username}</user>
<password>${jdbc.password}</password>
</dataSource>
</connectionSource>
</appender>
如您所见,我们设置了 dataSource 两次,并且在每种情况下都需要单独的属性替换。让 Spring 创建数据源并将其传递给 logback DBAppender 会好得多。
谁能建议最好的方法来做到这一点?