<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath:config/config.properties</value> </list> </property> </bean> <bean id="dbInfo" class="com.metarnet.noc.db.DbInfo"> <property name="driver" value="${jdbc.driverClass}" /> <property name="url" value="${jdbc.url}" /> <property name="user" value="${jdbc.user}" /> <property name="password" value="${jdbc.password}" /> <property name="initialPoolSize" value="${jdbc.initialPoolSize}" /> <property name="minPoolSize" value="${jdbc.minPoolSize}" /> <property name="maxPoolSize" value="${jdbc.maxPoolSize}" /> </bean> <bean id="dataSource" lazy-init="true" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close" > <property name="driverClass" value="com.mysql.jdbc.Driver" /> <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/spring?useUnicode=true&characterEncoding=UTF-8" /> <property name="user" value="root" /> <property name="password" value="123456" /> <property name="initialPoolSize" value="5" /> <property name="minPoolSize" value="2" /> <property name="maxPoolSize" value="${jdbc.maxPoolSize}" /> </bean>
如上面的配置, dbInfo是我用来测试propertyConfigurer赋值的,结果正常,
可下面的dataSource 死活不能用这种方法配置 , 只要有 ${} 就报错
在mybatis的配置文件中找到
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer" p:sqlSessionFactory-ref="sqlSessionFactory" p:basePackage="com.amar.db.ibatis"/>
原因不明,但删除掉这行就可以了
p:sqlSessionFactory-ref="sqlSessionFactory"######https://code.google.com/p/mybatis/issues/detail?id=414 一直都存在的问题了,已解决。######配置多数据源的时候,不能去掉这个属性,看来只能修改源代码了######
<context:property-placeholder location="classpath:config/config.properties"/>
看看jdbc.maxPoolSize在
config.properties的配制名称对应是否正确吗?~~
jdbc.driverClass=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/spring?useUnicode=true&characterEncoding=UTF-8 jdbc.user=root jdbc.password=123456 jdbc.initialPoolSize=3 jdbc.minPoolSize=3 jdbc.maxPoolSize=10
上面是config.properties内容######
我觉得是 dataSource 直接将 ${jdbc.maxPoolSize} 作为字符串来处理了,
没有将 ${jdbc.maxPoolSize}转化为配置文件中相对映的值
莫非是我c3p0版本的问题? 我的版本是0.9.1.2
######试一试把dataSource中的所有值用${}代替一下,说不定就可以了呢######不用 ${} ,而直接赋值一切正常, 不会是c3p0不支持${} 吧?######很负责任地告诉你这跟c3p0没有半毛钱关系。仔细看看你报的是什么错?
######2012-06-12 21:14:11,234 WARN com.mchange.v2.c3p0.DriverManagerDataSource : Could not load driverClass ${jdbc.driverClass} java.lang.ClassNotFoundException: ${jdbc.driverClass}######dataSource 直接将 ${jdbc.maxPoolSize} 作为字符串来处理了,
没有将 ${jdbc.maxPoolSize}转化为配置文件中相对映的值
######报的错就是
2012-06-12 21:14:11,234 WARN com.mchange.v2.c3p0.DriverManagerDataSource : Could not load driverClass ${jdbc.driverClass} java.lang.ClassNotFoundException: ${jdbc.driverClass}
######
前段时间工期干得紧,没时间处理,现在有时间了, 在慢慢找找原因.
目前认为原因可能是spring加载bean顺序的问题, 通过断点发现spring先加载ComboPooledDataSource,之后才加载PropertyPlaceholderConfigurer.
######我也遇到java.lang.ClassNotFoundException: ${jdbc.driverClass}这个报错,
想知道怎么解决的
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。