step 1
书写数据库的一些连接属性,起名为 db.property 吧,比如用sqlserver数据库:
user= sa
password= 123hcc
jdbcUrl= jdbc:sqlserver://localhost:1433;DatabaseName=WebDB
driverClass= com.microsoft.sqlserver.jdbc.SQLServerDriver
initPoolSize= 5
maxPoolSize= 10
step 2
在配置bean的xml(命名为 db.xml 吧)里导入资源文件db.property
<context:property-placeholder location="classpath:db.property"/>
step 3
接下来就是配置DataSource的bean实例
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="user" value="${user}"></property>
<property name="password" value="${password}"></property>
<property name="jdbcUrl" value="${jdbcUrl}"></property>
<property name="driverClass" value="${driverClass}"></property>
<property name="initialPoolSize" value="${initPoolSize}"></property>
<property name="maxPoolSize" value="${maxPoolSize}"></property>
</bean>
这样基本上就没有问题了。
不过像我这样的初学者即使按照别人的步骤一步步来,也会出现很多错误,下面是我配置过程中遇到的,希望对大家有帮助。
problem 1
org.springframework.beans.factory.BeanInitializationException:
Could not load properties; nested exception is java.io.FileNotFoundException:
class path resource [db.property] cannot be opened because it does not exist
提示说db.property找不到
因为我们配置的是:
<context:property-placeholder location="classpath:db.propery"/>
所以确保db.property文件在src目录下,不要创建在项目目录下
problem 2
提示说无法解析 "${user}"
这个问题很奇怪,SpEL表达式一定没错,当时我也花了很长时间,就是不知道错在哪。
后来我又看了下db.property文件,由于平时写代码时总喜欢在 "=" 前后空一格,所以就写成 "user = sa",
然后我就把user后面的空格给删了,结果问题就解决了....
但是当我写这篇博客时,为了写报错信息想把问题重现时,重新加上空格,运行时他又不报错了.... 我也不知道怎么回事。
如果同学实在不知道错在哪里,可以试试看去掉user后面的空格,或许就能解决了 。