SpringMVC+MyBatis+C3P0配置出錯(解決方案)
阿新 • • 發佈:2019-01-27
一般我們使用spring配置dataSource的時候會用到這樣的配置
<bean id="dataSource" class="com.mchange.v2.c3p0.C3P0PooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<property name="jdbcUrl" value="jdbc:mysql:///warehouse?characterEncoding=utf8"/>
<property name ="user" value="root"/>
<property name="password" value="123"/>
</bean>
在一次專案執行中出現瞭如下問題
在大佬的幫助下定位到了
Annotation-specified bean name ‘c3P0PooledDataSourceMBean’ for bean class [com.mchange.v2.c3p0.mbean.C3P0PooledDataSourceMBean] conflicts with existing, non-compatible bean definition of same name and class [com.mchange.v2.c3p0.jboss.C3P0PooledDataSourceMBean]
這句話
發現是建立c3p0的bean的時候建立了mbean 和jboss兩個bean進而去找了jar包的資訊
發現jar包中
兩個C3P0PooledDataSource的class檔案,由此發現平時的c3p0配置中
class="com.mchange.v2.c3p0.C3P0PooledDataSource"
會導致產生兩個c3p0的bean導致衝突,所以應該將這條配置資訊改成<bean id="dataSource" class="com.mchange.v2.c3p0.mbean.C3P0PooledDataSource">
這樣,就能避免衝突