spring 4.3.1中使用外部属性文件使c3p0链接数据库时遇到的一个bug
Spring中通过在applicationContext.xml文件中引入db.properties.xml外部属性文件来链接数据库
<context:property-placeholder location="classpath:db.properties"/>
db.properties.xml文件内容如下:
user=root
password=123456
driverClass=com.mysql.cj.jdbc.Driver
jdbcUrl=jdbc:mysql://shop?autoReconnect=true&useSSL=false
配置bean时,用"${user}","${password}","${driverClass}"来获取属性值,
但是在运行时,发现c3p0不能链接数据库,debug发现在获取user属性值时出错,而其他的属性值是正确的
<property name="user" value="${user}"/> 只有这里获取的值是错误的 <property name="password" value="${password}"/> <property name="driverClass" value="${driverClass}"/> <property name="jdbcUrl" value="${jdbcUrl}"/>
如果不使用外部属性文件配置,直接写成
<property name="user" value="root"/> 时,c3p0是可以链接到mysql上的
有人遇到过同样的问题吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
http://www.oschina.net/question/873438_234580 对问题讲的比较详细
debug发现user值为我的计算机用户名[18] 可能是值重复了[36]
你用的<context:property-placeholder>要注意system-properties-mode这个属性的设置
对的
http://www.oschina.net/question/873438_234580 这个也是类似的问题,应该是${user}获取值的时候出错了, 使用jdbc.user和jdbc.passworld就没问题, 应该是重名的问题
=
也许是你name有重复的key.user而已.